如果我有發生x,y和z事件的概率,如何在編程上實現這三個事件之間的選擇?概率實現
實施例: PR(X)= 0.3 PR(Y)= 0.2 PR(Z)= 0.5
我想的功能給我一個實現這些概率的說我應該選擇y或z等。
任何指針或引用表示讚賞,謝謝。
如果我有發生x,y和z事件的概率,如何在編程上實現這三個事件之間的選擇?概率實現
實施例: PR(X)= 0.3 PR(Y)= 0.2 PR(Z)= 0.5
我想的功能給我一個實現這些概率的說我應該選擇y或z等。
任何指針或引用表示讚賞,謝謝。
如果你有一個函數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;
}
偉大的思想家都認爲;) –
@Victor:要麼,或者它是顯而易見的;-) – PengOne
如果有事件發生,請使用函數返回[0,1)中的正常分佈並檢查它落在哪個範圍內。如果它在[0,0.3]中返回A,如果它在[0.3,0.5]中返回B,否則返回C.
在python中,你可以編寫一個程序來定義一個方法'選擇器',該方法需要兩個參數px和這些是前兩個事件獨立發生的可能性。該方法會根據情況返回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
不完全。你需要第二個條件來讀取'(px + py)* 10'來代替'py * 10'。 – PengOne
究竟給了你什麼,你想達到什麼目的?你有P(X),P(Y),P(Z)?你在尋找它們共同發生的概率嗎?他們是獨立的嗎? – amit
是的,我給出了每個事件的概率。說對象U,想要在這三個事件之間進行選擇,只選擇一個事件。 – BigBoy14
我還是不明白你的意思,你想要選擇什麼?你能給一個具體的詳細例子嗎? – amit