目前我正在使用均匀分布来生成获胜概率。
对于假设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%
概率?
目前我正在使用均匀分布来生成获胜概率。
对于假设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%
概率?
假设您希望获胜概率为 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}
同样,您可以将其扩展到您想要的任何精度
if (mt_rand(1, 100) / $probability <= 1) {
// success
}
例如,如果你现在有$probability = 10
;您有十个(一百个)案例,其中 1 到 100 之间的数字小于或等于 1。