PHP事件发生的概率百分比


php percentage chance for event to occur

我知道这是一个新手的问题,但我很困,所以我希望你能帮助我。

我有一个整数数组。根据具体情况,我可以有一个包含1,2,3或1,1,1,1或1,2,2等的数组。重要的是,数组中值之间的差异可能不大于最小值+ 2(我可以有1,2,3,但不能有1,2,4)。现在我获取数组的max和min,并从max中减去min。因为max和min之间的差值总是0,1或2(数组值之间的差值不大于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中的值范围-设为array(2,3,4)。现在我希望有50%的机会选择4,30%的机会选择3和20%的机会选择2。我怎么能连接整数的值在数组中选择它的机会?

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

编辑:换句话说,如果我有一个充满值的数组如何轻松,有一个范围的值,是数组中所有值的一部分,选择一个值比另一个概率更多?

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

你只需填充一个长度为10的整数数组,包含5个4s, 3个3s和2个2s:

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

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

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

上面的代码有帮助吗?