面試概率題

bokeyuan6發表於2021-02-12

1、一根木棒,截成三截,組成三角形的概率是多少?

設第一段截 x,第二段截 y,第三段 1 - x - y。

考慮所有可能的截法。可能的截法中必須保證三條邊都是正數且小於原來邊長,則有 0 < x < 1,0 < y < 1,0 < 1 - x - y < 1。

畫圖可知,(x, y) 必須在單位正方形的左下角的半個直角三角形裡,面積為 1 / 2。

然後考慮能形成三角形的截法。首先要滿足剛才的三個條件:

0 < x < 1

0 < y < 1

0 < 1 - x - y < 1

 

然後必須符合三角形的邊的要求,即兩邊之和大於第三邊:

x + y > 1 - x - y

x + 1 - x - y > y

y + 1 - x - y > x

化簡即得:

0 < x < 1/2

0 < y < 1/2

1/2 < x + y < 1

畫圖可知,此時 (x, y) 必須在邊長為 1/2 的三角形的右上角的半個直角三角形裡,面積為 1/8。於是最終概率為 (1/8) / (1/2) = 1/4。


2、有一蘋果,兩個人拋硬幣來決定誰吃這個蘋果,先拋到正面者吃。問先拋這吃到蘋果的概率是多少?

題目一看似乎答案就是 1/2,但其實認真細想並不是這麼回事。

給所有的拋硬幣操作從 1 開始編號,顯然先手者只可能在奇數(1,3,5,7…)次拋硬幣得到蘋果,而後手只可能在偶數次(2,4,6,8…)拋硬幣得到蘋果。

設先手者得到蘋果的概率為 p,第 1 次拋硬幣得到蘋果的概率為 p = 1/2,在第 3 次(3,5,7…)以後得到蘋果的概率為 p/4(這是因為這種只有在第1次和第2次拋硬幣都沒有拋到正面,概率為 1/4 = 1/2 * 1/2 的時候才有可能發生,而且此時先手者此刻面臨和開始相同的局面);所以可以列出等式 p = 1/2 + p /4,p = 2/3(注意 p 表示先手者得到蘋果的概率)。


3、一個三角形, 三個端點上有三隻螞蟻,螞蟻可以繞任意邊走,問螞蟻不相撞的概率是多少?

乍一看好像和三角形三邊長度有關係,事實上是無關的。

面試概率題

首先,每個螞蟻在方向的選擇上有且只有 2 種可能,共有 3 只螞蟻,所以共有 2 的 3 次方種可能,而不相撞有有 2 種可能,即全為順時針方向或全為逆時針方向。

不相撞概率 = 不相撞 / 全部 = 2/8 = 1/4。


4、扔篩子游戲

 

問題描述: 商家發明一種扔篩子游戲,顧客扔到多少點就得到多少錢,但扔篩子之前顧客需要付一定數量的錢 x,假設商家和顧客都足夠聰明(1)顧客付一次錢可以扔一次的情況下,顧客能接受的最大 x 是多少(2)現在規則改為顧客付一次錢可以扔兩次,顧客扔了第一次之後可以選擇是否繼續扔第二次,如果扔了第二次則以第二次的結果為準,如果沒有扔第二次就以第一次的結果為準,這時顧客能接受的最大 x 為多少。

第一問:可以直接算顧客收益的期望為 1/6 (1 + 2 + 3 + 4 + 5 + 6) = 3.5,顧客能接受的最大 x 就是他收益的期望值。

第二問:考慮顧客什麼情況下會扔第二次,就是扔第二次得到錢變多的概率相對較大的時候,那麼當顧客第一次扔到 1,2,3 的時候他會選擇繼續扔第二次,則這時候期望變為 1/6 (4 + 5 + 6) + 1/2 (1/6 (1 + 2 + 3 + 4 + 5 + 6)) = 4.25


5、已知一隨機發生器,產生 0 的概率是 p,產生 1 的概率是 1-p,現在要你構造一個發生器,使得它產生 0 和 1 的概率均為 1/2(隨機數生成)

由題目有: 0 : p 1 : 1 - p

連續產生兩個數,其組合以及概率如下:

00 : p2 01 : p(1 - p) 10 : (1 - p) p 11 : (1 - p)(1 - p)

可以發現 01 和 10 組合的概率是相等的,只需要將其分別對映到 0 和 1 即可。

即每次隨機產生兩個數,如果組合為00或11則丟棄,若為 01 則對映到 1,若為 10 則對映到 0,這樣一來產生 0 和 1 的概率均為 1 / 2 。

 


6、已知一隨機發生器,產生的數字的分佈不清楚,現在要你構造一個發生器,使得它產生 0 和 1 的概率均為 1/2(隨機數生成)

使用該隨機發生器產生隨機數 a,b,有以下 3 種情況:

  1. a < b
  2. a == b
  3. a > b

其中情況(1)和(3)是對稱的,發生的概率相等,只需要將這兩種情況分別對映到 0 和 1 即可,其中遇到 a == b 時忽略。


7、已知有個 rand7() 的函式,返回 1 到 7 隨機自然數,怎樣利用這個 rand7() 構造 rand10(),隨機 1 ~ 10

產生隨機數的主要原則是每個數出現的概率是相等的,如果可以得到一組等概率出現的數字,那麼就可以從中找到對映為 1 到 10 的方法。

rand7() 返回 1 ~ 7 的自然數,構造新的函式 (rand7() - 1) * 7 + rand7(),這個函式會隨機產生 1 到 49 的自然數。

原因是 1 到 49 中的每個數只有唯一的第一個 rand7() 的值和第二個 rand7() 的值表示,於是它們出現的概率是相等。

但是這裡的數字太多,可以丟棄 41 到 49 的數字,把 1 到 40 的數字分成 10 組,每組對映成 1 到 10 中的一個,於是可以得到隨機的結果。

具體方法是,利用 (rand7() - 1) * 7 + rand7() 產生隨機數 x,如果大於 40 則繼續隨機直到小於等於 40 為止,如果小於等於 40,則產生的隨機數為 (x - 1) / 4 + 1。

 

參考:https://zhuanlan.zhihu.com/p/46592195

相關文章