Chcę wyrzucić konkretną ilość wartości $s i konkretną $p. Ale chciałem to zrobić losowo.
Napisałem więc funkcję (bo chyba nic takiego gotowego w php nie ma?), która idzie po kolejnych wartościach i sprawdza czy liczba $p którą chcę usunąć jest mniejsza od tej w tablicy. Jeśli tak to losuje liczbę i wyciągam resztę z dzielenia tej losowej przez $p+1, ale jeśli jest większa to to z dzielenia przez tą w tablicy+1.
I tak w kółko po wszystkich elementach tablicy aż $p i $s nie będą wynosić zero.
No i tu pojawia się problem, bo po pierwszym wykonaniu while reszta z dzielenia zawsze wynosi zero, a nie wierzę żeby wartość kilkuset losowych liczb%2 wynosiła zawsze zero. Więc pewnie mam jakiś błąd, ale nie mogę się go dopatrzyć.
Po zmianie funkcji rand() na mt_rand() i dodaniu jej parametrów zaczęło działać tak jak ma, więc nie wiem czy tu problem jakiś nie leży w rand(). (jej też próbowałem dawać takie parametry zamiast reszty z dzielenia, ale nadal się wysypywało...)
Ktoś ma pomysł co jest nie tak, bo zastanawiam się czy moja wiedza logiczna czy matematyczna tu zawaliła ;-)
kod:
<?php //struktura tablicy ( 'p' => 2, 's' => 2 ), ( 'p' => 1, 's' => 2 ), ( 'p' => 1, 's' => 2 ), ( 'p' => 1, 's' => 0 ), ( 'p' => 1, 's' => 0 ), ( 'p' => 1, 's' => 0 ), ( 'p' => 1, 's' => 0 ), ( 'p' => 1, 's' => 1 ), ( 'p' => 0, 's' => 1 ), ( 'p' => 0, 's' => 1 ), ( 'p' => 1, 's' => 1 ), ( 'p' => 0, 's' => 1 ) ); //tutaj zaczyna się kod odpowiedzialny za losowanie $p = 7; $s = 8; while ($p >0 || $s >0) { foreach($zrm as $id_zrm => &$values) { //echo"<li> $id_zrm => 'p' = $values[p] 's' = $values[s]"; if($p<$values['p']) { $values['p'] -= $val; } else { $values['p'] -= $val; } $p -= $val; if($s<$values['s']) { $values['s'] -= $val; } else { $values['s'] -= $val; } $s -= $val; } } ?>