Сгенерировать неповторяющиеся случайные числа 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) чтобы повторить генерацию и убедиться, что повторов нет.
6
5
4
15
0
18
16
13
7