所以假设我有 2 个小数(例如 0.75 和 .25)。我正在尝试制作一个函数来获取这两个数字并随机选择一个“获胜者”,但基于这两个数字的百分比。简而言之,我需要 0.75 号码比 0.25 号码更有机会被选中(0.25 号码仍然可以被选中,但只有 25% 的机会)。我该怎么做呢?
问问题
460 次
4 回答
4
$prob = array(25, 75);
$total = array_sum($prob);
$rand = mt_rand(1, $total);
var_dump($rand);
foreach ($prob as $i => $p) {
$rand -= $p;
if ($rand <= 0) {
$winner = $i;
break;
}
}
var_dump($winner);
于 2011-02-22T04:23:46.270 回答
2
如果它们不总是加起来为 1,这仍然有效:
$winner = ( (rand(0,1000) / 1000) <= ($first / ($first + $second)) ) ? $first : $second;
于 2011-02-22T05:51:20.393 回答
1
$var1 = 25;
$var2 = 75;
$total = $var1 + $var2;
$rand = mt_rand(1, $total);
if($rand <= $var1)
echo("Value one ({$var1}) Wins!");
else
echo("Value two ({$var2}) Wins!");
像这样的东西应该工作。
于 2011-02-22T04:27:07.003 回答
1
在这种简单的情况下,您可以使用:
if (rand(0,1000)/1000 <= 0.25)
{
$winner = $first; // 25% number
}
else {
$winner = $second; // 75% number
}
于 2011-02-22T04:33:35.637 回答