Php 在小范围内均匀分布以产生精确的大概率
目前,我正在使用均匀分布来生成获胜概率 比如说Php 在小范围内均匀分布以产生精确的大概率,php,probability,Php,Probability,目前,我正在使用均匀分布来生成获胜概率 比如说1%我定义了一个中奖号码47,然后我做了一个mt\u rand(1100),如果号码是47,用户获胜。这很好 这对于小概率(如1/100000)很有效,但是当我想要概率为40%时,它是1/0.4=2.5 我不能做mt\u rand(1,2.5)我必须做mt\u rand(1,2)或mt\u rand(1,3),这分别意味着50%和33% 我应该怎么做才能得到40%的概率呢?if(mt_rand(1100)/$probabilityif(mt_rand
1%
我定义了一个中奖号码47
,然后我做了一个mt\u rand(1100)
,如果号码是47
,用户获胜。这很好
这对于小概率(如1/100000
)很有效,但是当我想要概率为40%
时,它是1/0.4=2.5
我不能做mt\u rand(1,2.5)
我必须做mt\u rand(1,2)
或mt\u rand(1,3)
,这分别意味着50%
和33%
我应该怎么做才能得到40%的概率呢?
if(mt_rand(1100)/$probabilityif(mt_rand(1100)/$probability假设你希望获胜概率为x(假设为整数),然后生成
if (mt_rand(1, 100) / $probability <= 1) {
// success
}
$num = mt_rand (1,100)
if ($num<=$prob) {//user wins}
$num=mt\u rand(1100)
如果($num假设您希望获胜概率为x(假设为整数),则生成
$num = mt_rand (1,100)
if ($num<=$prob) {//user wins}
$num=mt\u rand(1100)
如果($numOkay,我试图理解你的答案:)那么实际上这意味着只有当mt_rand()返回足够小的数字时,才有赢。好的,我试图理解你的答案:)那么实际上这意味着只有当mt_rand()返回足够小的数字时才有赢返回一个足够小的数字就赢了。是的,我开始发帖时他还没有回答。无论如何,我已经扩展了,包括了当获胜概率不是整数时如何处理的信息,所以这可能会帮助其他人。在我的情况下,概率为每10万,$prob在1到10万之间,所以我只要做if(mt_rand(1,100000)是的,你可以改变参数中的数字,并将其用于你拥有的任何概率等级。我开始发帖时,他没有回答。无论如何,我已经扩展了,包括了当获胜概率不是整数时如何进行的信息,因此这可能有助于其他人。在我的情况下,概率ar为每100000$prob介于1和100'000之间,所以我只需这样做,如果(mt_rand(1100000)是的,您只需更改参数中的数字,并将其用于任何概率标度