目前,我使用统一分布来产生获胜概率。
对于让我们说1%
的概率,我定义了一个中奖号码47
然后我执行了mt_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}}。
如何获得{{1}}概率?
答案 0 :(得分:2)
假设您希望获胜概率为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}
同样,您可以将其扩展到您想要的任何精度
答案 1 :(得分:1)
if (mt_rand(1, 100) / $probability <= 1) {
// success
}
E.g。如果你现在有$probability = 10
;你有十(百)个案例,其中1到100之间的数字小于或等于一。