#php
Как вывести случайные числа в заданном диапазоне от 1 до 90, то есть числа должны выводится без повторений, и все 90, но в случайном порядке.
Ответы
Ответ 1
Вариант 1: $used = array(); while (count($used)<90){ $rand = mt_rand(1,90); if (!in_array($rand,$used)) { $used[] = $rand; echo $rand."
"; } } Вариант 2 (лучше): for ($i=1;$i<=90;$i++) $arr[]=$i; while (count($arr)>0){ shuffle($arr); echo array_pop($arr)."
"; } 2-й лучше первого, т.к. в первом количество итераций цикла зависит от того, как часто mt_rand будет попадать в неиспользованное число. Поэтому если мы уже вывели 10, а случайное число еще 50 раз выдало 10, то в результате 50 лишних итераций. А во втором варианте кол-во итераций равно количеству выводимых чисел. Вариант 3 (от @ikoolik + от меня) убран цикл в заполнении: $arr = range(1,90); shuffle($arr); foreach ($arr as $val) echo $val."
";
Комментариев нет:
Отправить комментарий