随机数PHP混乱

时间:2011-02-22 04:19:56

标签: php math random srand

因此,假设我有两位小数(例如.75和.25)。我试图创建一个获取这两个数字并随机选择“胜利者”的函数,但基于这两个数字的百分比。简而言之,我需要.75号码才能获得更好的机会获得.25号码(.25仍然可以被选中,但它只有25%的几率)。我应该怎么做呢?

4 个答案:

答案 0 :(得分: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);

答案 1 :(得分:2)

如果它们总是加起来为1,那么它仍然有效:

$winner = ( (rand(0,1000) / 1000) <= ($first / ($first + $second)) ) ? $first : $second;

答案 2 :(得分: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!");

这样的事情应该有用。

答案 3 :(得分:1)

在这种简单的情况下,您可以使用:

 if (rand(0,1000)/1000 <= 0.25)
 {
     $winner = $first;   // 25% number
 }
 else {
     $winner = $second;  // 75% number
 }