PHP的rand()功能不能提供良好的随机数.所以我开始使用mt_rand(),据说可以提供更好的结果.但这些结果有多好?有没有什么方法可以再次改善它们?
我的想法:
function rand_best($min, $max) {
$generated = array();
for ($i = 0; $i < 100; $i++) {
$generated[] = mt_rand($min, $max);
}
shuffle($generated);
$position = mt_rand(0, 99);
return $generated[$position];
}
Run Code Online (Sandbox Code Playgroud)
这应该给你"完美"的随机数,不应该吗?
假设我在数据库中存储了以下信息:
User Points
A 2000
B 1000
Run Code Online (Sandbox Code Playgroud)
我想根据点数随机选择一个获胜者。在这种情况下,由于总共有 3000 分,“A”有 67% 的机会被选中,“B”有 33% 的机会。
使用 PHP 选择获胜者的最有效方法是什么(从计算概率到选择获胜者)?请注意,播放的用户数量不是固定的,并且可以达到很大的数量(因此它应该计算“每个用户”而不是固定在 A 和 B 上)。
我一直在研究潜在的解决方案,但还没有弄清楚。我很想听听您的解决方案!