我有一个项目使用 php 的 mt_rand() 来生成不同的随机整数,但我最近获得了对真实随机位流的访问权。我无法弄清楚如何创建类似于 mt_rand() 的函数,我可以在其中从我的位流中获取两个值之间的随机整数。我怎样才能做到这一点?
最佳答案
我将只读取 PHP_INT_SIZE * 8
位并将结果数字压缩到您需要的范围内:
function squash($nr, $min, $max)
{
return $min + $nr % ($max - $min);
}
另一种方式:
function squash($nr, $min, $max)
{
return $min + round($nr / PHP_INT_MAX * ($max - $min));
}
这只是我想到的,为什么不直接使用你的随机流并将其插入 mt_srand()
:
function squash($nr, $min, $max)
{
mt_srand($nr);
return mt_rand($min, $max);
}
关于php - 如何从位流中获取两个值之间的整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10896997/