Сгенерировать неповторяющиеся случайные числа PHP

Допустим, нужно сгенерировать три неповторяющихся числа от 0 до 9

Одно число можно сгенерировать с помощью random_int(0,9)

Чтобы сгенерировать ещё три неповторяющихся числа нужно добавлять каждое уже сгенерированное в массив и потом заставлять random_int работать пока не получится число не из массива

<?php $existing_array = [] while( (in_array( $new_number1 = random_int(0,9)), $existing_array ) ); array_push($existing_array, $new_number); while( (in_array( $new_number2 = random_int(0,9)), $existing_array ) ); array_push($existing_array, $new_number); while( (in_array( $new_number3 = random_int(0,9)), $existing_array ) ); array_push($existing_array, $new_number);

В результате получится три переменные $new_number1, $new_number2 , $new_number3, со значениями от 0 до 9 без повторов.

Если нужно сгенерировать большое количество случайных чисел нужно воспользоваться циклом for

Допустим, нужно десять случайных чисел от 0 до 20 без повторов.

<?php $existing = [] for ($i = 0; $i < 9; $i++) { while( (in_array( $number = random_int(0,20)), $existing ) ); array_push($existing_array, $new_number); } ?>

Все эти числа хранятся в массиве $existing

Чтобы получить их нужно выполнить ещё один цикл

for ($i = 0; $i < 9; $i++) { echo $existing[$i]; echo '<br>';

Результат работы такого генератора вы можете увидеть ниже - обновите страницу (F5 или CTRL + F5) чтобы повторить генерацию и убедиться, что повторов нет.

18
6
1
9
0
17
3
16
4

Статьи о PHP
Программирование на PHP
Как отобразить время различных часовых поясов PHP
Как вставить переменную в ссылку PHP
json_decode PHP
Как получить ширину экрана с помощью PHP
Вызов функции из другого файла
Premature end of chunk coded message body: closing chunk expected
Узнать свой HTTP_USER_AGENT
Сравнить две даты

Поиск по сайту

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: