PHP ставка на шанс для события произойдет - PullRequest
1 голос
/ 12 января 2012

То, что я пытаюсь сделать (но я полностью запутался), это сделать код на PHP, который выполняет код, основанный на вероятности, указанной в десятичных числах (максимум 10 десятичных знаков), где как 1 будет 100% шансдля кода, который будет выполнен.Вот что я пробовал, но не работает должным образом:

<?php
/*
    Rate to chance.
*/

//max 10 decimals
$rate = '0.010000000000'; //<-- should equal 1% chance

$chance = $rate*pow(10,10);

$random = mt_rand(0,pow(10,10));

if($random < $chance) { 
    echo "Ok."; //should be shown 1 out of 100 times in this example
}
?>

Почему я хочу сделать эту работу, потому что я хотел бы, чтобы код выполнялся с вероятностью менее 1% (например, 0,001%),Мой код (выше) не работает, и я, вероятно, делаю что-то довольно глупо и совершенно неправильно, но я надеюсь, что кто-то другой может помочь мне, потому что в настоящее время я полностью сбит с толку.

Заранее спасибо.

С наилучшими пожеланиями, Skyfe.

1 Ответ

9 голосов
/ 12 января 2012

pow - неправильный путь, это 1/rate:

<?php
// 1 chance out of 2, 50%
if (mt_rand(0, 1) === 0) {
   …
}
// 1 chance out of 101, which is < 1%
if (mt_rand(0, 100) === 0) {
    …
}

$rate = (double) '0.01';
$max = 1 / $rate; // 100
if (mt_rand(0, $max) === 0) {
    // chance < $rate
}
...