如何基于概率实现分支选择?

时间:2013-11-18 01:11:50

标签: algorithm probability

我希望程序选择具有设定概率的东西。例如,选择路径A的概率为0.312,选择路径B的概率为0.688。我能想到的唯一方法是从0-1区间随机选择并检查< = 0.312。是否有一些更好的方法可以扩展到2个以上的元素?

1 个答案:

答案 0 :(得分:0)

以下是一种比多个if else语句更有效的方法: -

假设

a = 0.2,b = 0.35,c = 0.15,d = 0.3。  制作一个数组,其中p [0]对应a,p [1]对应b,依此类推  运行评估概率总和的循环

p[0] = 0.2
p[1] = 0.2 + 0.35 = 0.55
p[2] = 0.55 + 0.15 = 0.70
p[3] = 0.70 + 0.30 = 1

在[0,1]中生成一个随机数。在p上进行二进制搜索以获取随机数。搜索返回的间隔将是您的分支

例如。

random no = 0.6
result = binarySearch(0.6)
result = 2 using above intervals
2 => branch c
相关问题