金剛坐飛機問題

2021-09-30 16:13:31 字數 1086 閱讀 4725

題目見程式設計之美4.1

大體是這樣的

如果自己票上寫的座位沒被佔就按照座位坐,被佔了就變身成金剛,隨便找地兒坐。問第i個人坐在自己座位的概率是多少?

1..n一共n個座位,為了方便計算起見,我們做乙個變換

變換1:金剛的票上的座位是最後乙個,也就是第n個,其餘人的票和座位再按照原先的順序排列成1..n-1。

這樣並不影響最終的概率,因為如果

1)金剛坐在自己的位置上,那麼大家同樣都是肯定坐在自己的位置上。

2)如果金剛坐在第i個位置(非他票上的座位)上,那麼前i-1個人會坐在自己的位置上,與變換前相同,而第i個人肯定不會坐在自己的位置上,他會在變換前的金剛的座位再加上i+1..n的集合中隨機挑乙個座位,這也有變換前相同,他挑的座位對於後面人的影響也是與變換前相同的。

設f(i,n)為新的n個座位的排列中第i個人坐到自己位置上的概率,那麼舊排列中第i個人坐到自己位置的概率就是

f(i,n)       if(i-1,n)    i>j;

j為金剛票上的座位

那麼我們現在來計算f(i,n),後面的討論全部基於變換後的排列。

對於乘客i,金剛的選擇會造成3種情況,假設金剛選擇的是j,分別為ij,概率分別為(n-i)/n,1/n,(i-1)/n。

如果i如果i=j,概率為0

如果i>j,那麼前j-1個人肯定坐在自己的位置上,而第j個人就變身成了金剛,這樣可以看做他就是金剛,他原來的座位就是n。

變換2:前j-1個人是打醬油的,跟後面的事件無關了,因為金剛在j上,所以第j個人變成了金剛2,他的票號是最後乙個,j+1..n-1號乘客成了新的受害者,將j+1..n-1從1開始重新編號,座位數變成n-j

故第i個人坐在原來座位的概率為f(i-j,n-j)

所以概率為綜上有

最後的結果是

f(i,n)       if(i-1,n)    i>j;

j為金剛票上的座位

金剛坐飛機問題

問題 程式設計之美 4.1 問題2 問題描述 現在有一班飛機要起飛了。乘客們準備按機票號碼 1,2,3,n 依次登記,突然來了只大猩猩 對,他叫金剛 也有飛機票,但是他插隊第乙個登上了飛機。然後隨意的選了乙個座位坐下。現在乘客們雖然感到憤怒,但還是以 和諧 為重,如果自己的位置沒有被占領,就趕緊坐下...

程式設計之美4 1 金剛坐飛機問題

問題描述 有一班飛機將要起飛,乘客們正準備按機票號碼依次排隊登記。突然來了乙隻大猩猩。他也有飛機票,但是他插隊第乙個登上了飛機,然後隨意地挑了乙個座位坐下了。其他乘客的反應如下 1 乘客們都很生氣,他們也隨意找位置坐下,並堅決不讓座給其他乘客 2 乘客們雖然很憤怒,但還是以 和諧 為重,如果自己的座...

《程式設計之美》學而思 金剛坐飛機

金剛坐飛機 2015 11 2 flyfish 引用自 程式設計之美 國外有乙個諺語 問 體重800 磅的大猩猩在什麼地方坐?答 它愛在哪兒坐就在哪兒坐。這句諺語一般用來形容一些 強人 並不遵守大家公認的規則,所以要對其行為保持警 惕。現在有一班飛機將要起飛,乘客們正準備按機票號碼 1,2,3,n ...