有没有一种方法可以根据最小值和最大值生成随机数?
例如,如果min为1且max为20,则应生成1到20之间的任何数字,包括1到20?
有没有一种方法可以根据最小值和最大值生成随机数?
例如,如果min为1且max为20,则应生成1到20之间的任何数字,包括1到20?
random_int()
,random_bytes()
或openssl_random_pseudo_bytes()
。正如@Salvador Dali所说rand()
,不会生成加密安全的结果。参见文档php.net/manual/en/function.rand.php
Answers:
在新的PHP7中,终于有了对加密安全的伪随机整数的支持。
int random_int ( int $min , int $max )
random_int —生成加密安全的伪随机整数
这基本上使以前的答案过时了。
random_int
和random_bytes
功能- github.com/paragonie/random_compat。
random_int
?如果它提供“更好”的随机数,为什么出于非加密原因不使用它?
random_int
s更改为rand
s。另外,我的用例是一个重试算法,我绝对不希望多次失败的功能,因为可预测的随机整数的沉睡后结块
一个更快的速度更快的版本将使用mt_rand:
$min=1;
$max=20;
echo mt_rand($min,$max);
资料来源:http : //www.php.net/manual/en/function.mt-rand.php。
注意:您的服务器需要启用Math PHP模块才能正常工作。如果没有,请调试您的主机以启用它,或者您必须使用普通的(慢速的)rand()。
试试这个。它将根据您的意愿生成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;
}