Страницы

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

воскресенье, 1 марта 2020 г.

Простейший скрипт рандома на php. Промежуток чисел

#php


Есть промежуток чисел от [1; 100]. Нужно чтобы php выводил на экран через echo рандомные
числа из этого промежутка, но так, чтобы они не повторялись, то есть, если, допустим,
php зарандомил число 57, то в дальнейшем php рандомил числа в промежутке от [1;57)V(57;100]
(то есть число 57 больше не повторялось)
    


Ответы

Ответ 1



Самая элеметная реализация $nums = []; for($i = 0; $i < 15; ;){ $num = mt_rand(1, 100); if(!in_array($num, $nums)){ $nums[$i] = $num; $i++; echo $num; } } Данный скрипт выведет 15 раз числа в диапазоне от 1 до 100 каждый раз исключая все прошедшие выпавшие числа, за счёт того, что сохраняет их в массиве и в дальнейшем проверяет, если ли в массиве каждое новое рандомное число, если есть, повторяем и так до тех пор пока оно не будет уникальное, когда число оказалось уникальным, сохраняем его в массиве и выводим. Для сохранения между сессиями браузеров, поместите в $_SESSION массив nums. Пример: session_start(); //... $_SESSION['nums'] = []; for($i = 0; $i < 15; ;){ $num = mt_rand(1, 100); if(!in_array($num, $_SESSION['nums'])){ $_SESSION['nums'][$i] = $num; $i++; echo $num; } }

Ответ 2



Для примера привел готовый массив исключений. Его можно хранить в удобном для вас виде (БД, файле, Куках или сессиях), чтобы после перезагрузки страницы он был доступен и добавлялись новые элементы массива в него. После выполнения скрипта нужно снова сохранить этот массив.

Ответ 3



Ещё можно так (в три строчки кода, проще уже некуда): Сгенерировать временный массив Перемешать его элементы Выбрать (к примеру) 15 элементов - все они будут случайными Пример: $arr = range(1, 100); shuffle($arr); $arr = array_slice($arr, 0, 15); var_dump($arr);

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

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