我知道这是一个菜鸟问题,但我很坚持,所以我希望你能帮助我。
我有一个带整数的数组。根据具体情况,我可以使用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.我如何连接数组中的整数值并有机会选择它?
我希望你能理解我的意思,你可以帮助我。
编辑: 换句话说,如果我有一个数组填充值如何轻松,具有一系列值作为数组中所有值的一部分,选择一个值的概率比另一个值更高?
答案 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.
}
以上代码会有帮助吗?