【发布时间】:2012-05-11 18:11:51
【问题描述】:
在 PHP 中,如果我用传送带构建一个工厂检查程序,其中表单上的弹出列表框是 100%(什么都不检查——让所有都通过)到 0%(检查所有内容),那么函数是什么?计算其中一个小部件何时需要检查?
一些额外的信息——标签上写着“让 [x%] 小部件在没有检查的情况下通过”。
除此之外,我们如何测试您的算法以证明它是正确的?例如,值为 100%,运行 99999 次,应该显示没有检查。 99% 的值,运行 99999 次,如果重复运行,可能会显示一次检查。值 0%,运行 99999 次,应显示所有 99999 个小部件正在发送到检查。
编辑:一位同事说我在这里混淆了赔率和概率。她认为我在描述概率?
无论如何,我尝试了这段代码作为测试,但除了 100 和 50 到 1 分外,它什么也没做。但是,1-49 的行为类似于 50,而 51 到 100 的行为类似于 100。
<?php
$nChance = @ $argv[1];
$nChance = intval($nChance);
for ($i = 1; $i <= 999999; $i++) {
$nTest = rand(1,floor(100/$nChance));
if (!($nTest == 1)) {
die("INSPECT! i($i) rand($nTest) chance($nChance)\n");
}
}
然后我尝试了这种变体,但也失败了,因为它只是一直说 INSPECT。
<?php
$nChance = @ $argv[1];
$nChance = intval($nChance);
for ($i = 1; $i <= 999999; $i++) {
$nTest = rand(0,100);
if (!($nTest < $nChance)) {
die("INSPECT! i($i) rand($nTest) chance($nChance)\n");
}
}
【问题讨论】:
-
如果我错了,请纠正我,但您要求有人构建一个工作脚本并为您测试它。也许这会更好地发布在您为完成的工作付费的网站上?
-
不,一点也不。 one liner 几乎可以工作,但是当有人做了类似“答案是 (mt_rand(1,100)
标签: php random probability probability-theory