Реализация вероятности - PullRequest
1 голос
/ 02 июля 2011

Если у меня есть вероятности наступления событий x, y и z, как я могу программно реализовать выбор между этими тремя событиями?

Пример: Pr (x) = 0,3 Pr (y) = 0,2 Pr (z) = 0,5

Мне бы хотелось, чтобы функция, обеспечивающая реализацию этих вероятностей, позволяла сказать, что я должен выбрать y, или, возможно, z и т. Д.

Любые указатели или ссылки приветствуются, спасибо.

Ответы [ 3 ]

1 голос
/ 02 июля 2011

Если у вас есть функция 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;
}
0 голосов
/ 02 июля 2011

В 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
0 голосов
/ 02 июля 2011

Если у вас есть пробники событий, возьмите функцию, возвращающую нормальное распределение в [0, 1), и проверьте, в какой диапазон она попадает. Если это в [0, 0,3), вернуть A, если это в [0,3, 0,5), вернуть B и в противном случае вернуть C.

...