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

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

Введение

В этой статье вы можете узнать как получить набор чисел без повторов из определённого диапазона.

Будет использован материал статей про массивы и циклы

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

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

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

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

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

Например

random_int(0, 1)

Вернёт 0 или 1

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

<?php 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; ?>

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

Zero

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

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

Как сгенерировать одно число понятно из предыдущего параграфа.

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

<?php $arr = array(); while(in_array(($number = random_int(0, 9)), $arr)); array_push($arr, $number); while(in_array(($number = random_int(0, 9)), $arr)); array_push($arr, $number); echo(implode(', ' , $arr)); ?>

В результате получится массив с двумя значениями от 0 до 9 без повторов. Можете обновить эту страницу в браузере и получить другой результат.

9, 8

Если чисел будет много - желательно сделать цикл .

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

<?php $arr = array(); for ($i = 1; $i <= 3; $i++) { while(in_array(($number = random_int(0, 9)), $arr)); array_push($arr, $number); } echo(implode(', ' , $arr)); ?>

2, 0, 4

РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе

Конец рекламы. Если там пусто считайте это рекламой моей телеги

Пример

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

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

<?php $sup = 20; $count = 9; if ($count > $sup) { echo"Невозможно сгенерировать $count разных чисел из $sup"; } else { $arr = unique_numbers($sup, $count); for ($i = 0; $i < $count; $i++) { echo $arr[$i]; echo '<br>'; } } function unique_numbers($sup, $count) { $arr = []; for ($i = 0; $i < $count; $i++) { while(in_array(($number = random_int(0, $sup)), $arr)); array_push($arr, $number); } return $arr; } ?>

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

5
20
4
7
11
16
2
1
14

Автор статьи: Андрей Олегович

Похожие статьи
Программирование на PHP
Вывод всех изображений из директории
Сгенерировать неповторяющиеся случайные числа PHP

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

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

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