亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python 中的二項式隨機變量

Python 中的二項式隨機變量

呼如林 2023-12-08 17:07:48
我試圖僅使用一行代碼來解決以下問題:“假設你參加了一個有 10 個問題的多項選擇題測試,每個問題有 5 個答案選擇(a、b、c、d、e),那么你僅通過猜測就正確答對 4 個問題的概率是多少?”我知道答案是 0.08808 或 9% 左右。我也嘗試使用下面的行來反映這個答案import numpy as np#number of trials = 10#number of answers for each question = 5#probability of answering one correctly = 1/5 or 0.2# == 1 because 1/0 will indicate correct or incorrectsum(np.random.binomial(5, 0.2, 10) == 1)/10.0.2有人可以闡明如何獲得 0.08808 而不是 0.2 嗎?謝謝!
查看完整描述

3 回答

?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

這是獲取您尋求的概率的代碼:


import math


def combinations_of_n_choose_m(n, m):

? ? return math.factorial(n)/math.factorial(n - m)/math.factorial(m)


def probability_of_correct_trials(trials, correct, prob):

? ? return combinations_of_n_choose_m(trials, correct) * prob**correct * (1-prob)**(trials-correct)


print(probability_of_correct_trials(10, 4, .2))

或者在一行中:


r = math.factorial(10)/math.factorial(10 - 4)/math.factorial(4) * prob**4 * (1-prob)**(10-4)

print(r)

結果:


0.08808038400000005


0.08828


查看完整回答
反對 回復 2023-12-08
?
米琪卡哇伊

TA貢獻1998條經驗 獲得超6個贊

近似該概率的蒙特卡羅方法是讓 Python 生成大量考試(例如一百萬個),其中每個考試有 n=10 個問題,猜出正確答案的機會為 p=1/5。然后你查看模擬考試結果,找出在模擬考試總數中恰好得到 4 個正確答案的分數。


import numpy.random as rnd 


n = 10; p = 1/5

numTrials = 10**6

numTimesFourCorrect = 0


for trial in range(numTrials):

    numAnswersCorrect = rnd.binomial(n, p)

    if numAnswersCorrect == 4:

        numTimesFourCorrect += 1


print(numTimesFourCorrect / numTrials)

一次運行在我的機器上給出了 0.088242(每次都不同),非常接近您的期望。原始代碼的主要問題是,它np.random.binomial(n, p, numTrials)會給你的numTrials結果是 0 到 n 之間的數字;所以類似于np.mean(rnd.binomial(n, p, numTrials) == 4)矢量化的方法來做到這一點。


查看完整回答
反對 回復 2023-12-08
?
嚕嚕噠

TA貢獻1784條經驗 獲得超7個贊

我想補充一點,可以通過sympy如下方式獲得精確的解析解:


from sympy import stats, Eq

import fractions


# 10 questions with probability of success given by 1/5

X = stats.Binomial('X', 10, fractions.Fraction(1, 5))

P = stats.Probability(Eq(X, 4)).evaluate_integral()

# 172032/1953125 (exact answer)

approx = 172032/1953125

# 0.088080384


查看完整回答
反對 回復 2023-12-08
  • 3 回答
  • 0 關注
  • 173 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號