我看到有些人试图使用以下方法在两个数字之间生成随机数:
$random_num = rand($min, $max);
虽然我看到其他人使用更复杂的东西,例如“用最大随机数划分rand(),将其乘以范围并添加起始编号:
$random_num = $min + ($max - $min) * (rand()/getrandmax());
其中 $ min 是起始编号, $ max 是结束编号。
我想知道这两种方式有什么区别,一种比另一种更好,如果是这样,为什么呢?
谢谢
答案 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()
。