我有3个选项,它们必须按特定比例发生。 在10次中,这是比率:
现在我有以下内容:
if (rand(8,10)) {
option1();
} elseif (rand(1,10)) {
option2();
} elseif (rand(1,10)) {
option3();
}
但这可以选择1次超过8次。选项2从未发生,选项3很少发生。
那么,实现这个目标的正确方法是什么?
答案 0 :(得分:2)
尝试这样的事情。
$roll = rand(1,10);
if ($roll == 1) {
option2();
} elseif ($roll == 2) {
option3();
} else {
option1();
}
如果随机数为1(10%的时间),则选项2。
如果随机数为2(10%的时间),则选项3。
如果随机数是其他任何东西(80%的时间),则选项1。
答案 1 :(得分:0)
$r = rand() / getrandmax();
if ($r <= 0.8) {
option1();
} elseif ($r <= 0.9) {
option2();
} else {
option3();
}
答案 2 :(得分:-2)
不,这不是正确的方法。你可以使用类似的东西:
<?php
// Store in DB use of options 1, 2 and 3
// field value
// -----------------
// options1 0
// options2 0
// options3 0
// If $options1 = 8, $options2= 1 and $options3 = 1, then clear all values from DB
$random = rand(1,3);
if ($random == 1) {
if ($options1 < 9) { option1(); } else { // tryagain; }
} elseif (
...
// update DB with new value for used option
对不起,代码有些混乱(if部分),但我想你可以理解。如果您需要整个代码,请告诉我。