算了一下,很小,大概0.4%的樣子。先講方法,後面給程式碼1. 我們把問題抽象一下,把具體的數字拿掉,用,表示有個英雄,抽取次,抽出來個不同的英雄的機率先不考慮邊界情況,那麼我們看這個函式要怎麼算:假設我抽次抽出來個不同的,分兩種情況,最後一次抽出來的以前也抽出來過和最後一次抽出來的,以前從沒抽出來過,如下
算了一下,很小,大概0.4%的樣子。先講方法,後面給程式碼1. 我們把問題抽象一下,把具體的數字拿掉,用,表示有個英雄,抽取次,抽出來個不同的英雄的機率先不考慮邊界情況,那麼我們看這個函式要怎麼算:假設我抽次抽出來個不同的,分兩種情況,最後一次抽出來的以前也抽出來過和最後一次抽出來的,以前從沒抽出來過,如下
最後一次這個英雄以前也抽出來過,那麼之前相當於次抽出來了個英雄,機率為,算上這次還得在這m個英雄中間抽,所以總共是最後這個英雄第一次抽出來,那麼透過類似的分析可以得到此時的機率是而整個機率就是這兩種情況加起來,因為是不重不漏的劃分。邊界情況懶得分析了,出來0次選0個英雄是100%的,其餘都是02.下面給出計算的程式碼,附圖展示了100個英雄的情況下,抽取次數和抽中所有英雄的機率之間的關係,可以看到300次的時候,抽出所有英雄的機率是非常小的,500次大概就能有50%的機率隨出所有英雄了,抽1000次情況下得到100個不同的機率就很接近100%了--------------------------------------正事不做,跑到這來繼續講題目,一個組合數學的方法,容斥原理,假設抽次的方案沒選出英雄的方案的集合記為,記住是沒選出,那麼很容易知道沒選出k個英雄的方案數是:然後直接套到容斥原理,我們就得到了選出所有英雄的方案數:這個結果除以就是結果,不過上式還是個累加的式子,沒研究怎麼化簡,簡單寫了個程式,驗證了一下和前面的結果是一致的:)