概率实现

时间:2011-07-01 20:50:01

标签: math statistics probability

如果我有发生x,y和z事件的概率,我怎么能以编程方式实现这三个事件之间的选择?

实施例: Pr(x)= 0.3 Pr(y)= 0.2 Pr(z)= 0.5

我想要一个功能让我意识到我应该选择y,或者z等等。

感谢任何指针或参考,谢谢。

3 个答案:

答案 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
相关问题