假設每次用(不無聊,無聊)來表示當前狀態。而不無聊加無聊的人數總和是一定的。經過一次交談,有三種情況:
1. (i, j) –> (i, j) 選中的兩個朋友都是無聊的。
2. (i, j) –> (i-1, j+1) 選中的乙個朋友無聊,另乙個不無聊的。
3. (i, j) –> (i-2, j+2) 選中的兩個朋友都不無聊。
這三次選擇的情況分別對應:
(1)從原來的 i 個人中選擇2個。
(2)從 i 個人選1個,從 j 個人選1個。
(3)從原來的 j 個人中選擇2個。
假設總共有t個人,從中選擇兩個人可能有t∗
(t−1
)2中情況。
而發生這三種情況的概率為分別:
(1)i∗(
i−1)
t∗(t
−1)
(2)2∗i
∗jt∗
(t−1
) (3)j∗(
j−1)
t∗(t
−1)
而從乙個狀態到達另乙個狀態,可以簡化為二分類:保持當前狀態或者發生改變。這就很有意思了。讓人想起乙個經典問題,有一枚硬幣,假設拋擲為正面的概率為p,拋擲為負面的概率為1-p,一直拋擲直到出現正面才停下來,求拋擲的平均次數。很容易可以推導出公式為:2/p+1/(1-p)-1。
應用到當前問題,假設每次改變狀態為成功事件,所需要的次數為2/p+1/(1-p)-1,其中p=j∗
(j−1
)(i+
j)∗(
i+j−
1)。而每次改變有兩種情況:無聊的人多乙個或者多兩個,發生的概率比為:2*i*j : i*(i-1)。
**如下
import numpy as np
#p表示成功的概率,求不到成功不停下來的實驗次數的期望
deftimes
(p):
if p == 0:
return float('inf')
if p == 1:
return
1return
2/p+1/(1-p)-1
m_people = 40
n_people = 50
total_people = m_people + n_people
pair_of_mn = np.zeros([total_people+1,total_people+1])
#當只有乙個有趣的人時,只要選中這個有趣的人實驗就結束了
#m = 0, 時間為0
#m+n>1
#m個有趣的人,n個無聊的人,0#m總是在減少,n總是在增加,
#m不會超過50個人,而n會
m = 1
n = total_people - m
un_success = n*(n-1)/((m+n)*(m+n-1))
pair_of_mn[m,n] = times(1-un_success)
for i in range(2,m_people+1):
j = total_people - i
un_success = j*(j-1)/((i+j)*(i+j-1))
port_1 = 2*i*j/(2*i*j+i*(i-1))
port_2 = i*(i-1)/(2*i*j+i*(i-1))
pair_of_mn[i,j] = times(1-un_success) + port_1*pair_of_mn[i-1,j+1] + port_2*pair_of_mn[i-2,j+2]
for i in range(1,m_people+1):
# print(i,total_people-i,pair_of_mn[i,total_people-i]-pair_of_mn[i-1,total_people-i+1])
print(i,total_people-i,pair_of_mn[i,total_people-i])
均值和期望一樣嗎 平均數和期望的區別
平均數是乙個統計學概念,期望是乙個概率論概念。平均數是實驗後根據實際結果統計得到的樣本的平均值,期望是實驗前根據概率分布 的樣本的平均值。之所以說 是因為在實驗前能得到的期望與實際實驗得到的樣本的平均數總會不可避免地存在偏差,畢竟隨機實驗的結果永遠充滿著不確定性。如果我們能進行無窮次隨機實驗並計算出...
Hash表查詢成功和查詢不成功的平均查詢長度
將關鍵字序列雜湊儲存到雜湊表中。表長為7,處理衝突採用線性探測再雜湊法。解 1 求雜湊表 h 15 15 7 1 h 14 14 7 0 同理 h 28 0 衝突 h1 28 28 1 7 1 衝突 h2 28 28 2 7 2 同理 h 26 5 h 56 0 衝突 h1 56 1 衝突h2 56...
雜湊表處理位址衝突的方法及成功查詢的平均長度
首先通過一道例題來引出這篇部落格的主旨 h key key 7 求得雜湊位址 存在位址衝突 線性探測再雜湊 當位址衝突時,每次位址 1 2,3 直到找到空位 查詢長度 38 7 3 a 3 38 125 7 4 a 4 25 174 7 4 a 4 74 a 5 74 263 7 0 a 0 63 ...