隨機數的相關面試題

2021-08-07 04:52:55 字數 3183 閱讀 7639

**:

當前面試中各大名企經常出現各種各樣的概率類面試題。究其原因,我覺得是概率型面試題可以綜合考查面試者的思維能力、應變能力、數學能力。在這裡對各種型別的概率型題目進行了收集和總結,希望在自我總結的同時對大家有所幫助。

方法比較簡單,基本思想是每次隨機取乙個數,然後把它交換到最後的位置。然後對前(n-1)個數使用遞迴的演算法。

遞迴實現:

[cpp]view plain

copy

void

suffle_dfs(

intar, 

intn)    

非遞迴實現:

[html]view plain

copy

void suffle(int ar, int n)  

}  注:此處假設rand()的返回結果遠遠大於n。

這種題目一看似乎答案就是1/2,但其實認真細想並沒有那麼簡單。

給所有的拋硬幣操作從1開始編號,顯然先手者只可能在奇數(1,3,5,7…)次拋硬幣得到蘋果,而後手只可能在偶數次(2,4,6,8…)拋硬幣得到蘋果。設先手者得到蘋果的概率為p,第1次拋硬幣得到蘋果的概率為1/2,在第3次(3,5,7…)以後得到蘋果的概率為p/4(這是因為這種只有在第1次和第2次拋硬幣都沒有拋到正面(概率為1/4=1/2*1/2)的時候才有可能發生,而且此時先手者在此面臨和開始相同的局面)。所以可以列出等式p=1/2+p/4,p=2/3。

現在答案已經很明確了,所以大家平時要注意不要這樣被人騙了,當然也不能去騙別人,哈哈~

//假設從-n這n個數中生成m個不重複的數,且n小於int的表示範圍

//總體思想是一開始每個數被選中的概率是m/n,於是隨機乙個數模n如果餘數小於m則輸出該數,同時m減

//否則繼續掃瞄,以後的每個數被選中的概率都是m/(n-i)

[cpp]view plain

copy

void

random_generate(

intn, 

intm)  

i++;  

}  while

(++i<=n)printf(

"%d "

,i);  

}   (wiki關於隨機數的介紹

解答1:

54張牌分成3等份,共有m=(c54取18)*(c36取18)*(c18取18)種分法。

其中大小王在同乙份的分法有n=(c3取1)*(c52取16)*(c36取18)*(c18取18)種。

因此所求概率為p=n /m=17/53。

解答2:

不妨記三份為a、b、c份。大小王之一肯定在某乙份中,不妨假定在a份中,概率為1/3。然後a份只有17張牌中可能含有另一張王,而b份、c份則各有18張牌可能含有另一張王,因此a份中含有另一張王的概率是17/(17+18+18)=17/53。

也因此可知,a份中同時含有大小王的概率為1/3 * 17/53。

題目問的是出現在同乙份中的概率,因此所求概率為3*(1/3 * 17/53)=17/53。

7、a和b2人投硬幣,正面a得1元,反面b得一元.起始時a有1元,b有100元.

遊戲持續進行,直到其中1人破產才終止.

問:

1.如果硬幣正反概率相同,遊戲的期待長度(expected duration)是幾次投擲?

2.如果硬幣是不公正的,正面概率為p,反面概率為q.(p+q=1), 那麼遊戲的期待長度(expectedduration)是幾次投擲?

答案還沒整理

8、完美2011.10.16筆試題

:2d平面上有乙個三角形abc,如何從這個三角形內部隨機取乙個點,且使得在三角形內部任何點被選取的概率相同。

在二維座標系中可以用座標(x,y)來表示圖形中的乙個點。如下圖只要能夠在各個帶雙向箭頭的圖之間的點能夠建立一一對映即可。如把乙個長方形(如正方形)的點對映到另乙個長方形的點只要把座標做相應的放大縮小即可。如把長方形的點對映到乙個直角三角形,只要將長方形右上部份的三角形的點對映到對稱的左下角的三角形的點即可。而直角三角形對映到一邊平行於x軸的三角形的對映只要做x軸相應的偏移即可。而任意三角形可以分割成兩個其中有一邊平行於x軸的三角形。說的不是很清楚,具體的對映方法可以認真思考並寫出公式。

9、平均要取多少個(0,1)中的隨機數才能讓和超過1。答案: e 次, 其中e是自然對數的底

10、程式設計之美:金剛坐飛機問題

如果自己票上寫的座位沒被佔就按照座位坐,被佔了就變身成金剛,隨便找地兒坐。問第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) i

f(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) i

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

j為金剛票上的座位

隨機數相關面試題

1 給你乙個陣列,設計乙個既高效又公平的方法隨機打亂這個陣列 此題和洗牌演算法的思想一致 方法比較簡單,基本思想是每次隨機取乙個數,然後把它交換到最後的位置。然後對前 n 1 個數使用遞迴的演算法。遞迴實現 void suffle int a,int n 非遞迴實現 void suffle int ...

隨機數相關面試題

1 給你乙個陣列,設計乙個既高效又公平的方法隨機打亂這個陣列 此題和洗牌演算法的思想一致 方法比較簡單,基本思想是每次隨機取乙個數,然後把它交換到最後的位置。然後對前 n 1 個數使用遞迴的演算法。遞迴實現 void suffle int a,int n 非遞迴實現 void suffle int ...

隨機數的相關面試題

當前面試中各大名企經常出現各種各樣的概率類面試題。究其原因,我覺得是概率型面試題可以綜合考查面試者的思維能力 應變能力 數學能力。在這裡對各種型別的概率型題目進行了收集和總結,希望在自我總結的同時對大家有所幫助。方法比較簡單,基本思想是每次隨機取乙個數,然後把它交換到最後的位置。然後對前 n 1 個...