Случайное число PHP путаница - PullRequest
0 голосов
/ 22 февраля 2011

Допустим, у меня есть 2 числа в десятичных числах (например, .75 и .25).Я пытаюсь создать функцию, которая получает эти 2 числа и выбирает «победителя» случайным образом, но основываясь на процентах этих 2 чисел.Короче говоря, мне нужен номер 0,75, чтобы иметь больше шансов на то, чтобы его выбрали, чем число 0,25 (25-ое число все еще может быть выбрано, но оно имеет шанс только 25%).Как мне это сделать?

Ответы [ 4 ]

4 голосов
/ 22 февраля 2011
$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);
2 голосов
/ 22 февраля 2011

Если они не всегда добавляют до 1, это все равно будет работать:

$winner = ( (rand(0,1000) / 1000) <= ($first / ($first + $second)) ) ? $first : $second;
1 голос
/ 22 февраля 2011

В этом упрощенном случае вы можете использовать:

 if (rand(0,1000)/1000 <= 0.25)
 {
     $winner = $first;   // 25% number
 }
 else {
     $winner = $second;  // 75% number
 }
1 голос
/ 22 февраля 2011
$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!");

Что-то подобное должно работать.

...