Сгенерировать неповторяющиеся случайные числа 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) чтобы повторить генерацию и убедиться, что повторов нет.
8
7
13
15
4
3
5
14
6
РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе
Конец рекламы. Если там пусто считайте это рекламой моей телеги