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