100種不同英雄,抽300次,每次抽取都是獨立的。請問這300次抽取抽到全部100個英雄的概率是多少?
100種不同英雄,抽300次,每次抽取都是獨立的。請問這300次抽取抽到全部100個英雄的概率是多少?
算了一下,很小,大概0.4%的樣子。
先講方法,後面給代碼
1. 我們把問題抽象一下,把具體的數字拿掉,用,表示有
個英雄,抽取
次,抽出來
個不同的英雄的概率
- 最後一次這個英雄以前也抽出來過,那麼之前相當於
次抽出來了
個英雄,概率為
,算上這次還得在這m個英雄中間抽,所以總共是
- 最後這個英雄第一次抽出來,那麼通過類似的分析可以得到此時的概率是
而整個概率就是這兩種情況加起來,因為是不重不漏的劃分。
邊界情況懶得分析了,出來0次選0個英雄是100%的,其餘都是02.下面給出計算的代碼,附圖展示了100個英雄的情況下,抽取次數和抽中所有英雄的概率之間的關係,可以看到300次的時候,抽出所有英雄的概率是非常小的,500次大概就能有50%的概率隨出所有英雄了,抽1000次情況下得到100個不同的概率就很接近100%了

這個結果除以就是結果,不過上式還是個累加的式子,沒研究怎麼化簡,簡單寫了個程序,驗證了一下和前面的結果是一致的:)

大家說的都很好,我這裡再提供一個當n(題目中為100)比較大的時候,快速近似求解以及低成本運算的思路(Poisson Process近似)

-----------------------------------------------------------------------------
大概是0.004 貼代碼
-module(calc).
-compile(export_all).
print() -&>
{A,B} = calc_p(0,0),
io:format("p is ~w",[B/A]).
calc_p(A,150) -&>
{A,150};
calc_p(A,B) -&>
N= calc_p1(300,[]) + B,
calc_p(A+1,N).
calc_p1(0,L1) -&>
L2 = lists:usort(L1),
%io:format("L2:~w",[[length(L2),length(L1)]]),
case erlang:length(L2) of
100 -&> 1;
_ -&> 0
end;
calc_p1(N,L1) -&>
%random:seed(now()),
Rand = random:uniform(100),
calc_p1(N-1,[Rand|L1]).
結果圖:

我自己也寫過code算過,很早之前了,大概0.05%左右的概率. 當時是進行大量的實驗得到的概率的,有沒有辦法通過數學方法得到精確值??
應該是


另付全部事件的計算方式:鑒於100個盒子放300個球較難理解,可以看做300個球去選盒子,每個球都有100個選擇,則所有事件為100的300次方
P.S.:題主保重身體,不要累著了P.S.2:圖片貌似好像大概似乎出了點小小的問題,如果要看請私聊我推薦閱讀:
※LoveLive 手游中,完全不課金的情況下,每年理論上最多可以抽卡多少次?
※共有 N 道測試題,答案只有是或否,測試完後會告訴你得分,請用儘可能少的測試次數得到每道題的正確答案?
TAG:數學 | 概率 | 概率論 | 300英雄300hero |
