有没有办法根据最小值和最大值生成随机数?
例如,如果 min 为 1,max 为 20,那么它应该生成 1 到 20 之间的任何数字,包括 1 和 20?
<?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。
注意: 您的服务器需要启用 Math PHP 模块才能正常工作。如果没有,请修改您的主机以启用它,或者您必须使用正常(且较慢)的 rand()。
function generateRandom($min = 1, $max = 20) {
// Prioritize `random_int` for security
if (function_exists('random_int')) {
return random_int($min, $max); // more secure
}
// Fallback to `mt_rand` if `random_int` isn't available
if (function_exists('mt_rand')) {
return mt_rand($min, $max); // faster
}
// Use `rand` as a last resort.
// Uncomment line below to warn about potential issues
// trigger_error("Using less secure 'rand' function for random number generation. Consider upgrading your PHP version.", E_USER_WARNING);
return rand($min, $max); // old
}
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;
}