事件发生的PHP百分比机会

时间:2013-04-06 19:30:18

标签: php probability

我知道这是一个菜鸟问题,但我很坚持,所以我希望你能帮助我。

我有一个带整数的数组。根据具体情况,我可以使用1,2,3或1,1,1或1,2,2等数组。重要的是,数组中的值之间的差异可能不大于最小数字+2(我可以有1,2,3但没有1,2,4)。现在我抓住数组的最大值和最小值,并从最大值减去最小值。因为总是max和min之间的差异是0,1或2(数组值并不比两个更大)我有可能的机会:

0: - all array values are equal
1: - all array values are from range <x, x + 1>
2: - all array values are from range <x-1, x+1>

现在,如果我想从上面的数组中随机选择值,那就很容易了。但是,我如何才能以比其他人更大的概率选择数字的百分比机会呢?

我是什么意思?考虑第二个例子,数组x-1,x + 1中的值范围 - 让它成为数组(2,3,4)。现在我希望有50%的机会选择4,30%的机会选择3和20%来选择2.我如何连接数组中的整数值并有机会选择它?

我希望你能理解我的意思,你可以帮助我。

编辑: 换句话说,如果我有一个数组填充值如何轻松,具有一系列值作为数组中所有值的一部分,选择一个值的概率比另一个值更高?

2 个答案:

答案 0 :(得分:1)

我不确定我完全理解第一部分,但是你想要有50%的几率选择4%,30%的机会选择3和20%的机会选择2。

您只需填充长度为10的整数数组,其中包含5个4,3个3和2个2:

int[] a=[4,4,4,4,4,3,3,3,2,2];

现在以相等的概率随机选择0到9之间的索引,并返回该索引处数组中的数字。这将返回4与50%,3与30%和2与20%。

答案 1 :(得分:0)

$rand = rand(1, 100);
if ($rand > 50) {
    //select first array
} else {
    //select the second array and so on.
}

以上代码会有帮助吗?