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

时间:2017-11-29 19:57:37

标签: php random

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

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

虽然我看到其他人使用更复杂的东西,例如“用最大随机数划分rand(),将其乘以范围并添加起始编号:

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

其中 $ min 是起始编号, $ max 是结束编号。

我想知道这两种方式有什么区别,一种比另一种更好,如果是这样,为什么呢?

谢谢

1 个答案:

答案 0 :(得分:0)

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

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

25

后者为您提供范围内的浮动:

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

25.653779622937

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