Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [PHP] rozbijanie liczby na godziny

Napisany przez: szybki 13.06.2018, 08:02:34

  1. $max = 1500;
  2. $hour = [8,9,10,11,12,13,14,15,16,17,18,19,20,21,22];


Jak zrobić, aby każda godzina miała losową wartość, ale tak, aby razem nie przekraczały liczby maksymalnej?

Napisany przez: olszam 13.06.2018, 08:46:07

może tak

  1. for($i=0; $i<15;$i++){
  2. $hour[$i] =[8+$i,http://www.php.net/rand(0,1500)];
  3. }



Napisany przez: mmmmmmm 13.06.2018, 09:08:44

  1. $i=-1;
  2. $count=http://www.php.net/count($hour);
  3. $l=[];
  4. foreach($hour as $h)
  5. {
  6. $l[]=http://www.php.net/rand(1, $max - http://www.php.net/array_sum($l) -($count - $i++));
  7. }

Napisany przez: szybki 13.06.2018, 09:26:45

@olszam - jest problem, ponieważ suma tych wartości nie jest równa 1500

Napisany przez: Pyton_000 13.06.2018, 11:27:48

Cytat(szybki @ 13.06.2018, 09:02:34 ) *
Jak zrobić, aby każda godzina miała losową wartość, ale tak, aby razem nie przekraczały liczby maksymalnej?

Więc naucz się formułować pytania.

Napisany przez: mmmmmmm 13.06.2018, 11:55:17

Przepraszam, że zrozumiałem..

Napisany przez: szybki 13.06.2018, 14:07:20

Żle napisałem, chodzi o to aby wartości w tablicy dla danej godziny nie przekraczały maksymalnej wartości, ale jednocześnie wszystkie godziny były jej sumą

Napisany przez: nospor 13.06.2018, 14:09:11

Cytat
nie przekraczały maksymalnej wartości, ale jednocześnie wszystkie godziny były jej sumą

Nie tworz zbednych warunkow bo tylko zaciemniasz opis i nawet mmmmmmm ktory byl pewien ze zrozumial okazuje sie ze nie zrozumial wink.gif
Skoro godziny maja byc suma maksymalnej wartosci to logiczne ze zadna z nich nie moze byc od niej wieksza...

Napisany przez: mmmmmmm 14.06.2018, 07:41:17

@nospor - mylisz się. Zrozumiałem dokładnie, tak jak było napisane pierwotnie. Czyli "tak, aby razem nie przekraczały liczby maksymalnej".
Mój kod to spełnia. Po dojściu warunku dodatkowego "jednocześnie wszystkie godziny były jej sumą", wystarczy niewielka zmiana w kodzie, by ostatni element był różnicą.

Napisany przez: nospor 14.06.2018, 08:59:22

@mmmmmm napisales po poscie:
"jest problem, ponieważ suma tych wartości nie jest równa 1500"
ze zrozumiales a nadal sie odnosiles do pierwszego posta mimo ze w kolejnym byl UPDATE wink.gif

Ja rozumiem ze twoj post kod byl odpowiedzia na pierwszy post. Chodzi o kolejne posty autora i twoj.
Ale nie zrozum mnie zle. Ja naprawde nie mialem na mysli nic zlego wspominajac o tobie. Ot chcialem pokazac autorowi jak bardzo miesza i ludzie podaja rozwiazania nie na to co chcial

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)