圓桌上1000個人輪流向左或右開槍,最後活下來概率最大的是幾號?
類似問題:圓桌上1000個人輪流開槍,最後活下來的是幾號?
本題和上面這個鏈接的規則略有不同,具體如下:
1000個人圍坐圓桌一圈,最開始1號手裡有把槍,1號可以選擇向左(1000號)開槍,也可以選擇向右(2號)開槍,向兩側開槍的可能性完全隨機(向左向右全是50%)。開槍後,1號把槍交給他未開槍的那一側(打死2號就把槍交給1000號,打死1000號就交給2號),2號或1000號接過槍後,按同樣規則向左或向右開槍。以此類推,直至只剩1個人活著為止。那麼最後活下來概率最大的是幾號?
兩點注釋:
1.每個人之間不能串通。例如1號如果開槍打死1000號,把槍交到2號手上時,2號選擇向1號或3號開槍仍然完全隨機。
2.到最後只剩2人時,則此輪槍在誰手裡,就直接向對方開槍。
- 對稱,1001-n與1+n出列概率相等。
2. 遞減,離1的實際距離越遠,越安全。
所以存活概率最大的是501號。
編程驗證概率密度分布如下:
對應MATLAB代碼如下:
L = 1000;
times = 1000000;
count = zeros(L,1);
for ii = 1:times
T = zeros(L,2);
T(:,1) = [2:L 1];
T(:,2) = [L 1:L-1];
GunHolder = 1;
Rand = 2*randi(2,L-1,1)-3;
for jj = 1:L-2
if Rand(jj)&>0
T(GunHolder,1) = T(T(GunHolder,1),1);
T(T(GunHolder,1),2) = GunHolder;
GunHolder = T(GunHolder,2);
else
T(GunHolder,2) = T(T(GunHolder,2),2);
T(T(GunHolder,2),1) = GunHolder;
GunHolder = T(GunHolder,1);
end
end
count(GunHolder) = count(GunHolder)+1;
end
plot(1:L,count/times);
我們試圖找規律---
1:1
2:1,0
3:0,1/2,1/2
4:1/2,0,1/2,0
5:0,1/4,1/4,1/4,1/4
6:1/4,0,1/4,1/4,1/4,0
7:0,1/8,1/8,1/4,1/4,1/8,1/8
......
從2個人開始,
偶數人時持槍者相鄰的人毫無希望;
奇數人時持槍者自己毫無希望。
而從7開始,已經呈現出「離槍越遠越安全」的趨勢。
我們接下來再推幾步。其中概率用最簡整數比表示。括弧內數字表示分母。
8:2,0,2,3,4,3,2,0(16)
9:0,2,2,5,7,7,5,2,2(32)
10:4,0,4,7,12,14,12,7,4,0(64)
歸納可以得到,離槍越遠越安全。
因此501號勝率最高。
而且可以直觀看到的是,持槍者在下一回合會有50%被打死;沒被打死的50%下又拿回了槍,也就是說「槍」是一個每兩回合生存率減半的道具。
於是我們最先得出的是,
1號生存率 1/2^499
2號生存率 0
1000號生存率 0
每個人的處境可以用一個數對(a,b)表示,其中a和b分別是兩個方向距離持槍者的人數。比如開局300號的狀態是(298,700)。
當兩個數字都不小於1的時候,自己離硝煙還遠,事不關己高高掛起。至於人數上的變化,可以看作是隨機的某一邊少了一個人,也就是50%變成(a,b-1)或者(a-1,b)。
當有一個數字變成了0,就會發現
1.一個壞消息:下一回合自己就有50%概率gg啦
2.一個好消息:你沒中槍,並永久獲得道具「槍」
3.一個壞消息:這個道具具有負面效果
4.一個好消息:你的勝率可計算了
5.一個壞消息:如果當前人數是奇數,可以獲得稱號「有些人活著,(他已經死了)」
6.一個好消息:當前人數是偶數
7.一個壞消息:這個勝率還是太小了。。
當(a,0)時,如果a是偶數則gg,如果a是奇數=2k+1則勝率為2^(-k-1)。
想用excel作圖,結果excel掛掉了回頭再說吧。個人感覺應該找不到一個現成的分布來計算對應的概率。取n=20,模擬結果如下(使用Mathematica進行模擬)
使用Mathematica中內置的機器學習方法來找一個最靠近此數據分布的概率密度函數:
然而,分開看這20個位置的概率,分別如下:
可以發現1號旁邊兩個人是不可能存活的。以4人為例考慮,1打死旁邊1人,把槍給了另一人,另一人無論打死誰,都會把槍給另外一人,從而最後被打死。
因此這個分布是畸形的,如果去掉1是最後死的情況,那麼確實有點像是二項分布。然而,不管是什麼分布,當n足夠大時,最終都會收斂到正態分布,這點也可以通過模擬得到驗證。最終,存活概率最大的,依然是距離1最遠的那個,即n/2+1。
1. 存活下來的概率是左右對稱的,也就是說2和n存活的概率一樣,3和n-1一樣,以此類推。
2. 對於任何一個玩家,從第一次持槍開始,每經過兩輪,存活的概率減少50%。比如說1號玩家,第0輪活著的概率是1,第二輪活著的概率是1/2,第四輪活著的概率是1/4。。。當這個999輪的遊戲結束時,1號玩家活著的概率為(1/2)^499。
3. 在槍傳到相鄰的玩家手裡之前,你永遠是安全的。
4. 501 從左手起,距離1號玩家500個位置,從右手起同樣是500個位置,是場上里第0輪持槍的1號玩家最遠的玩家,平均來看,需要花最多的輪數,槍才可以傳遞到501號玩家手中。
5. 如果槍在傳到501號玩家手中之前,501號玩家就死了,只能是他的相鄰兩名玩家在上一輪第一次持槍了,這時,501號玩家存活(本輪持槍)的概率=死亡的概率=50%,假設他的左鄰或者右鄰在上一輪第一次持槍的情況下。
6. 所以一名玩家要想存活的概率越高,即那麼槍傳到他手裡的平均時間要儘可能的長,且槍傳到他左右相鄰玩家的平均時間也是越長越好。
綜上,501號玩家活的概率最大。推薦閱讀:
※三國殺中曹沖「稱象」所獲牌數期望是多少?
※平面幾何添加輔助線證明的原理到底是什麼?
※正17邊形裡面包含著什麼秘密?
※為什麼錢幣要用1,2,5而不是1,2,4或1,3,5之類?
※600人站一排 報數 每次報到奇數的都被殺掉 請問站在哪最安全 怎麼算?