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

Содержание
Сгенерировать одно случайное число
Три разных числа
Пример
Похожие статьи

Сгенерировать одно случайное число

Одно число можно сгенерировать с помощью функции random_int()

Синтаксис функции довольно прост:

random_int(НАЧАЛО, КОНЕЦ)

Будет сгенерировано число из диапазона между НАЧАЛО и КОНЕЦ

Например

random_int(0, 1)

Вернёт 0 или 1

Пример функции, в основе которой лежит random_int()

function my_random() { $rand = random_int(0, 2); if ($rand == 0) { $random_text = "Сгенерировано число Zero"; } else if ($rand == 1) { $random_text = "Сгенерировано число One"; } else { $random_text = "Сгенерировано число Two"; } return $random_text; } $text = my_random(); echo $text;

Пример работы этой функции вы можете увидеть обновив эту страницу в браузере несколько раз.

Сгенерировано число One

Сгенерировать три случайных числа

Допустим, нужно сгенерировать три неповторяющихся числа от 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) чтобы повторить генерацию и убедиться, что повторов нет.

0
6
8
13
4
15
2
17
19