如果我有发生x,y和z事件的概率,我怎么能以编程方式实现这三个事件之间的选择?
实施例: Pr(x)= 0.3 Pr(y)= 0.2 Pr(z)= 0.5
我想要一个功能让我意识到我应该选择y,或者z等等。
感谢任何指针或参考,谢谢。
答案 0 :(得分:1)
如果您的函数rand()
在[0,1]
中返回一个统一的随机数,那么
float r = rand();
if (rand < Pr(x)) {
return x;
} else if (rand < Pr(x)+Pr(y)) {
return y;
} else {
return z;
}
同样,如果你可以生成一个介于1和100之间的随机整数,那么
int r = rand();
if (rand < Pr(x)*100) {
return x;
} else if (rand < (Pr(x)+Pr(y))*100) {
return y;
} else {
return z;
}
答案 1 :(得分:0)
如果您有事件的probs,请在[0,1]中返回返回正常分布的函数,并检查它落在哪个范围内。如果它在[0,0.3)中返回A,如果它在[0.3,0.5]中返回B,否则返回C.
答案 2 :(得分:0)
在python中你可以编写一个程序来定义一个方法'chooser',它接受两个参数px和py,它们是独立发生的前两个事件的概率。该方法将根据需要返回x,y或z,python代码如下:
import random
def chooser(px,py):
prob = random.randint(1, 10)
if (prob<=(px*10)):
return x
else if (prob<=((px+py)*10)):
return y
else:
return z