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 種情況:
- a < b
- a == b
- 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