程序模拟抽奖流程图_一道与联欢会相关的概率统计题目的模拟仿真
繼續(xù)昨天的問題,回顧一下相應(yīng)的規(guī)則。
1. 同學(xué)按座位號依次進(jìn)行抽簽;
2. 抽簽過程中抽到的同學(xué)不能為之前已經(jīng)抽到的同學(xué);
3. 按照昨天的規(guī)則,為了計算簡便,可以抽到自己。
那么根據(jù)昨天的分析,我們得到的抽簽次數(shù)的理論平均值為
由于該問題的分析過于復(fù)雜,另外昨天解決該問題的時間也比較倉促,所以我們的分析和計算可能出現(xiàn)問題。那么我們可以借助一下計算機(jī)來模擬仿真一下這個問題。
其算法如下:
1. 設(shè)置了被抽獎人序號和每個同學(xué)抽獎次數(shù)的統(tǒng)計向量(分別為向量a和向量b),每個向量均是n維的,n是抽獎人數(shù),并且每個向量初始值全部是0;
2. 設(shè)置一個n次的循環(huán)。在循環(huán)內(nèi)部,當(dāng)?shù)?em>k位同學(xué)在抽簽時,先設(shè)置一個從1到n的隨機(jī)數(shù)。如果這個隨機(jī)數(shù)在向量a中出現(xiàn)過,那么繼續(xù)制造一個從1到n的隨機(jī)數(shù),然后將向量b中第k位的數(shù)字加上1,表示進(jìn)行了一次抽簽的意思;如果這個隨機(jī)數(shù)在向量a中未出現(xiàn)過,則將向量b中第k位的數(shù)字加上1后,進(jìn)入第k+1次的循環(huán);
3. (2)中的過程一共進(jìn)行k次;
4. 然后把向量b中的所有結(jié)果進(jìn)行加和,得到本輪抽簽的總次數(shù);
5. 為了能得到一個更準(zhǔn)確的單輪抽簽次數(shù)的平均值,設(shè)置一個輪次數(shù)計算一下平均值即可。
MATLAB程序如下:
function?y=party1(n)
nn=linspace(0,0,n); ??????????????%%被抽獎人,向量a
con=linspace(0,0,n); ?????????????%%抽獎次數(shù)計數(shù),向量b
for?i=1:n
????kk=ceil(rand()*n); ???????????%%被抽號碼
????for?k=1:1000*n
????????if?ismember(kk,nn)==1 ????%%繼續(xù)抽,是否有之前的元素
???????????kk=ceil(rand()*n);
???????????con(i)=con(i)+1;
????????else?break
????????end
????end?
????nn(i)=kk;
????con(i)=con(i)+1;
end
y=sum(con);
上面是單輪抽簽次數(shù)的模擬情況。下面是模擬輪數(shù)的情況。
function?y=partycon1(m,n) ?????%%m為輪次數(shù),n為每輪多少人
mm=linspace(0,0,m);
for?i=1:m
????mm(i)=party(n);
end
y=mm;
在運(yùn)行界面只需輸入下面兩行即可
>>partycon1(100,40)
>>mean(ans(:))
第一行是進(jìn)行100輪的模擬,第二行是取這100輪平均值。
根據(jù)我們的理論計算,40人進(jìn)行抽簽的抽簽平均次數(shù)約為171.14次,而我們的模擬計算結(jié)果如下表所示。
輪次 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 平均 |
結(jié)果 | 170.41 | 166.34 | 179.12 | 165.97 | 169.34 | 170.79 | 174.30 | 167.36 | 175.94 | 171.06 |
注意,每輪測試100次,經(jīng)過900輪測試,其平均抽簽次數(shù)為171.06,與理論計算結(jié)果差距微小,應(yīng)該說我們昨天分析的是正確的。
下面我們要對規(guī)則進(jìn)行一定的修改,也就是我們定義不能抽到自己,并定義抽到自己視為本次抽簽作廢(不在總的抽簽次數(shù)上加上1),然后我們先進(jìn)行模擬,之后再進(jìn)行理論分析。其模擬結(jié)果如下表:
輪次 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 平均 |
結(jié)果 | 169.51 | 172.63 | 161.41 | 178.30 | 175.04 | 169.73 | 176.60 | 160.79 | 168.76 | 170.31 |
我們看,這兩個計算結(jié)果間的差距微小,甚至可以忽略不計,那么接下來我們需要從理論上解釋一下其原因,請看下回分解。
總結(jié)
以上是生活随笔為你收集整理的程序模拟抽奖流程图_一道与联欢会相关的概率统计题目的模拟仿真的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用python循环语句求素数_Pytho
- 下一篇: kafka 异步发送阻塞_Kafka学习