有没有办法根据最小值和最大值生成随机数?
例如,如果min为1且最大值为20,则应生成1到20之间的任何数字,包括1和20?
答案 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)
答案 4 :(得分:4)
答案 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;
}