我有3个选项,它们必须以特定的比例出现。在10次中,这是比率:
- 8x选项1
- 1x选项2
- 1x选项3
现在我有以下内容:
if (rand(8,10)) {
option1();
} elseif (rand(1,10)) {
option2();
} elseif (rand(1,10)) {
option3();
}
但这使选项1出现的次数超过8次。选项2从未出现,选项3很少出现。
那么,实现这一点的正确方法是什么呢?
试试这样做。
$roll = rand(1,10);
if ($roll == 1) {
option2();
} elseif ($roll == 2) {
option3();
} else {
option1();
}
如果随机数为1(10%的时间),选项2
如果随机数为2(10%的时间),选项3
如果随机数是其他的(80%的时间),选项1
$r = rand() / getrandmax();
if ($r <= 0.8) {
option1();
} elseif ($r <= 0.9) {
option2();
} else {
option3();
}
不,这不是正确的方法。你可以这样写:
<?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部分),但我想你可以理解。如果您需要完整的代码,请告诉我。