使用PHP在[min - max]范围内的随机数

时间:2010-11-13 17:46:40

标签: php security random

有没有办法根据最小值和最大值生成随机数?

例如,如果min为1且最大值为20,则应生成1到20之间的任何数字,包括1和20?

7 个答案:

答案 0 :(得分:130)

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

答案 1 :(得分:28)

在新的PHP7中,最终支持cryptographically secure pseudo-random integers.

int random_int ( int $min , int $max )
  

random_int - 生成加密安全的伪随机整数

基本上使以前的答案过时了。

答案 2 :(得分:17)

更快更快版本将使用mt_rand:

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

来源:http://www.php.net/manual/en/function.mt-rand.php

注意:您的服务器需要启用Math PHP模块才能生效。如果没有,请让您的主机启用它,或者您必须使用正常(和较慢)的rand()。

答案 3 :(得分:5)

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

rand ( $min , $max )

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

答案 4 :(得分:4)

rand(1,20)

PHP rand函数的文档在这里:

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

使用srand()功能设置随机数生成器种子值。

答案 5 :(得分:4)

我在这里捆绑了答案并使其与版本无关;

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
}

答案 6 :(得分:0)

试试这个。它会根据你的意愿生成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;
}