PHP随机选择3件事(%20,%20,%60)的时间?

时间:2014-06-12 16:55:30

标签: php

我有多少时间能做某事? 3个不同的选择?我无法弄清楚如何以3种方式做到这一点:

if 20% {
   code 20% of the time
} elseif 20% {
  code #2 20% of the time
} else %60 {
    code # 3 60% of the time
}

我知道这适用于一个或两个选项,但3怎么样?

$rand = mt_rand(1, 100); 
if ($rand > $successrate) // Success rate is your integer; 87 for 87% for example 
{ 
    // This is a failure. 
}  

3 个答案:

答案 0 :(得分:2)

使用0到99之间的随机值(因为你正在处理百分比),你可以这样做:

$rand = mt_rand(0, 99);
if ($rand < 20) {
    //Do this 20% of the time
} elseif ($rand < 40) {
    //Do this 20% of the time
} else {
    //Do this 60% of the time
}

或者,如果您更喜欢处理非零值

$rand = mt_rand(1, 100);
if ($rand <= 20) {
    //Do this 20% of the time
} elseif ($rand <= 40) {
    //Do this 20% of the time
} else {
    //Do this 60% of the time
}

请注意,您不能使用严格的运算符(或使用&lt; 21 /&lt; 41),因为在这种情况下,您将拥有19%,19%和62%

答案 1 :(得分:1)

您可以尝试以下测试:

if ($rand > 40) {
  // 41-100
} else if ($rand > 20) {
  // 21-40
} else {
  // 0-20
}

答案 2 :(得分:1)

完全相同

$rand = mt_rand(1, 100);
if ($rand >= 1 && $rand <= 20)
    // 20%
else if ($rand >= 21 && $rand <= 40)
    // 20%
else if ($rand >= 41 && $rand <= 100)
    // 60%