PHP率事件发生的机会

时间:2012-01-12 10:55:47

标签: php random probability

我正在尝试做什么(但完全混淆)是在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 个答案:

答案 0 :(得分:9)

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
}