Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在小范围内均匀分布以产生精确的大概率_Php_Probability - Fatal编程技术网

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)/$probability
if(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)是的,您只需更改参数中的数字,并将其用于任何概率标度