Случайное число в диапазоне [min-max] с использованием PHP

есть ли способ генерировать случайное число на основе min и max?

например, если min был 1 и max 20, он должен генерировать любое число между 1 и 20, включая 1 и 20?

7 ответов


<?php
  $min=1;
  $max=20;
  echo rand($min,$max);
?>

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

int random_int ( int $min , int $max )

random_int-генерирует криптографически безопасные псевдослучайные целые числа

что в основном делает предыдущие ответы устаревшими.


на быстрее быстрая версия будет использовать mt_rand:

$min=1;
$max=20;
echo mt_rand($min,$max);

источник:http://www.php.net/manual/en/function.mt-rand.php.

Примечание: для этого на вашем сервере должен быть включен модуль PHP Math. Если это не так, ошибка вашего хоста, чтобы включить его, или вы должны использовать нормальный (и медленнее) слчис().


(rand() % ($max-$min)) + $min

или

rand ( $min , $max )

http://php.net/manual/en/function.rand.php


rand(1,20)

документы для функции RAND PHP находятся здесь:

http://php.net/manual/en/function.rand.php

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


Я собрал ответы здесь и сделал его независимым от версии;

function generateRandom($min = 1, $max = 20) {
    if (function_exists('random_int')):
        return random_int($min, $max); // more secure
    elseif (function_exists('mt_rand')):
        return mt_rand($min, $max); // faster
    endif;
    return rand($min, $max); // old
}

попробуйте этот. Он будет генерировать id в соответствии с вашим желанием.

function id()
{
 // add limit
$id_length = 20;

// add any character / digit
$alfa = "abcdefghijklmnopqrstuvwxyz1234567890";
$token = "";
for($i = 1; $i < $id_length; $i ++) {

  // generate randomly within given character/digits
  @$token .= $alfa[rand(1, strlen($alfa))];

}    
return $token;
}