随机概率问题:
假设概率事件有 A BC D E F ... N
概率比例为 50%20% 10%50% 2% 1% ... n%
则所有概率和为 S,在于值上所有事情发生的总概率和不为 1 而是 S ,事件触发有序
伪代码:
事件概率数组 E[N]
概率总和 S = S(E)
概率数值 T = [0,1] * S
for(I = E第一个下标,I < N, ++I)
{
if(T <= E[I])
return I;//当前触发概率下标
else
T -= E[I];//减去排除的区域
}
假设概率事件有 A BC D E F ... N
概率比例为 50%20% 10%50% 2% 1% ... n%
则所有概率和为 S,在于值上所有事情发生的总概率和不为 1 而是 S ,事件触发有序
所以某一件事件触发的概率为 T = rand[0,1] * S, T 从 S 中匹配一个随机值,区间匹配
所以触发的事件为有序事件中的一个。
伪代码:
事件概率数组 E[N]
概率总和 S = S(E)
概率数值 T = [0,1] * S
for(I = E第一个下标,I < N, ++I)
{
if(T <= E[I])
return I;//当前触发概率下标
else
T -= E[I];//减去排除的区域
}