Как создать генератор случайных чисел на PHP?

Приветствую вас дорогие читатели! В этом уроке я покажу, как можно создать генератор случайных чисел для своего сайта!

Как создать генератор случайных чисел на PHP?

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

Генераторы случайных чисел очень популярны среди организаторов конкурсов в контакте (о конкурсах можно почитать в статье о раскрутке группы).

Например, для проведения конкурса нужно определить случайного победителя – для этого вам нужно будет идти на чужой сайт, который не всегда бывает доступен и генерировать случайное число (числа), теперь же, вы можете генерировать их на своем сайте на реальном, либо на локальном сервере.

Также, в нашем генераторе можно будет задать количество случайных чисел.

Сведем все задачи к списку:

  • Возможность указать диапазон
  • Возможность выбора способа генерации – числа без повторов или с повторами
  • Возможность указать количество чисел

Следует соблюсти следующие условия, при не выполнении которых, будет выведена ошибка:

  • Разница между минимальным и максимальным значением должна быть больше 0
  • Максимальное значение должно быть больше минимального

 

Давайте рассмотрим простенькую HTML верстку:

<form action="" method="POST">

        <p>Задайте диапазон, введя числа, которые больше 0 и меньше 999999</p>
        <p>От:<br><input type="text" name="min"></p>
        <p>До:<br><input type="text" name="max"></p>
        <p>Сколько:<br><input type="text" name="count"></p>
        <p>Без повторов:<br><input type="checkbox" name="replay"></p>
        <p><input type="submit" name="generate" value="Сгенерировать"></p>

</form>

 

PHP код:

<?   
        //Проверка на число
        function check_on_number($number){
                $number = trim($number);
                if( $number < 0 OR $number > 999999 ) return 1;
                if ( preg_match("|^[\d]+$|", $number) ) return $number; else return 1;
        }

        //Генерируем числа
        if( isset($_POST['generate']) ){
        
                $min = check_on_number(intval($_GET['min']));
                $max = check_on_number(intval($_GET['max']));
                $count = check_on_number(intval($_GET['count']));

                if( $_POST['replay'] == 'on' ) $replay = true; else $callback = false;
                
                if( $min >= $max ) echo 'Ошибка! Проверьте введенные данные';
                else{

                        $result_array = array(); //Массив со случайными числами
                        $end = 0; //Флаг окончания выборки
                        
                        
                        if( $replay ){ //Если стоит галочка исключения повторов
                                
                                while( $end == 0 ){
                         
                                        $random = rand($min, $max); //Случайное число от min до max
                                        if ( !in_array($random, $result_array) )  $result_array[] = $random; 
                                        if( count($result_array) == $count ) $end = 1;
                                }
                                
                        }else{ //Если с повторами
                                
                                for ($i = 1; $i <= $count; $i++) {
                                        $result_array[] = rand($min, $max);
                                }       
                        }
                         
                        //Выводим числа
                        foreach( $result_array AS $item ){    
                                echo $item.'<br>';    
                        }
                }
        }
?>

 

Если мы поставим галочку, то будем создавать новые числа до тех пор, пока не наберется нужно количество не повторяющихся чисел. Если галочку не ставить, то будут сгенерированы любые числа нужного количества – разумеется, в заданном диапазоне.

От входных данных (строк) мы сначала берем целое значение функцией “intval”, а после проверяем это значение на число и вхождение в заданный диапазон с помощью заранее написанной функции- “check_on_number” – вводимое число должно быть большее 0 и меньше 999999, об этом мы предупредили пользователя на html форме.

После всех операций просто выводим массив с результатом.

Вот, в принципе, и всё на сегодня, желаю вам удачи, пока!

Если вам нужна помощь в создании какого-либо функционала, сайта, сервиса, тестов или калькуляторов, то готов помочь, подробнее на странице услуг.