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