0

目前我正在使用均匀分布来生成获胜概率。

对于假设1%我定义一个中奖号码的概率,47那么我会执行 amt_rand(1,100)并且如果该号码是47用户中奖。这很好。

这适用于小概率,1/100'000但是当我想要一个概率时,让我们说40%哪个是1/0.4 = 2.5

我不能让mt_rand(1,2.5)我必须做mt_rand(1,2)mt_rand(1,3)分别表示50%33%

我该怎么做才能获得40%概率?

4

2 回答 2

3

假设您希望获胜概率为 x(假设为整数),然后生成

$num = mt_rand (1,100)
if ($num<=$prob) {//user wins}

如果你没有 $prob 作为整数并且是一个小数点后 2 位的数字,例如:47.23%,那么你可以生成

$num = mt_rand(1,10000)
if ($num/100 <= $prob), {//user wins}

同样,您可以将其扩展到您想要的任何精度

于 2013-06-18T14:53:57.270 回答
2
if (mt_rand(1, 100) / $probability <= 1) {
    // success
}

例如,如果你现在有$probability = 10;您有十个(一百个)案例,其中 1 到 100 之间的数字小于或等于 1。

于 2013-06-18T14:46:42.217 回答