繁体   English   中英

rand(min,max)和rand()/ getrandmax()之间的差异

[英]Difference between rand(min, max) and rand()/getrandmax()

我看到有人尝试使用以下方法在两个数字之间生成随机数:

$random_num = rand($min, $max);

当我看到其他人使用更复杂的东西时,例如“将rand()除以最大随机数,再乘以范围,然后加上起始数字:

$random_num = $min + ($max - $min) * (rand()/getrandmax());

其中$ min是起始数字, $ max是结束数字。

我想知道这两种方法之间的区别是什么,一种方法优于另一种方法,如果可以,为什么?

谢谢

前者为您提供范围内的整数:

$min = 1;
$max = 100;
echo rand($min, $max);

25

后者使您的浮动范围在:

echo $min + ($max - $min) * (rand()/getrandmax());

25.653779622937

除此之外,您唯一需要关注的区别是rand()不足以用于安全目的。 如果您需要加密强度高(即不可预测)的随机数,请使用random_int()openssl_random_pseudo_bytes()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM