概率实现

发布于 2024-11-18 06:32:33 字数 167 浏览 1 评论 0原文

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

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

我想要一个函数来让我了解这些概率,说我应该选择 y,或者可能是 z 等。

任何指针或引用都值得赞赏,谢谢。

If I have the probabilities of x, y, and z events occurring, how can I programatically realize the choosing between these three events?

Example:
Pr(x) = 0.3
Pr(y) = 0.2
Pr(z) = 0.5

I'd like a function to give me a realization of these probabilities to say I should choose y, or maybe z, etc.

Any pointers or references are appreciated, thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

冰雪之触 2024-11-25 06:32:33

如果您有一个函数 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;
}

If you have a function rand() that returns a uniform random number in [0,1], then

float r = rand();
if (rand < Pr(x)) {
    return x;
} else if (rand < Pr(x)+Pr(y)) {
    return y;
} else {
    return z;
}

Similarly, if you can generate a random integer between, say, 1 and 100, then

int r = rand();
if (rand < Pr(x)*100) {
    return x;
} else if (rand < (Pr(x)+Pr(y))*100) {
    return y;
} else {
    return z;
}
只有一腔孤勇 2024-11-25 06:32:33

如果您有事件的概率,请使用在 [0, 1) 中返回正常分布的函数并检查它落在哪个范围内。如果在 [0, 0.3) 中则返回 A,如果在 [0.3, 0.5) 中则返回 B,否则返回 C。

If you have probs of events, take function returning normal distrib in [0, 1) and check in which range it falls. If it in [0, 0.3) return A, if it in [0.3, 0.5) return B and otherwise return C.

二智少女猫性小仙女 2024-11-25 06:32:33

在 python 中,您可以编写一个程序,定义一个方法“选择器”,该方法采用两个参数 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

In python you could write a program which defines a method 'chooser' which takes two parameters px and py those being the probabilties of the first two events occuring independently. The method would return x,y or z as appropriate, python code is below:

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文