Страницы

Поиск по вопросам

среда, 29 января 2020 г.

Вывод случайных чисел

#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."
";

Комментариев нет:

Отправить комментарий