概率題目彙總

球隊兩強相遇

8只球隊,有3個強隊,其餘都是弱隊,隨機把它們分成4組比賽,每組兩個隊,問兩強相遇的概率是多大?

解題思路:

  1. 首先求出8只球隊分成4組的方法數:第一隊有7種,第二隊有5種,第三隊有3種,第四隊就剩下1種,所以總數爲 7 × 5 × 3 × 1 = 105 種。
  2. 沒有兩強相遇的方法數:在5個弱隊中選出3個與強隊配對,總數爲 C(5,3) × A(3,3) = 60 種。
  3. 兩強不相遇的概率爲:(105-60)/105 = 3/7

螞蟻碰頭

三隻螞蟻從正三角形的三個頂點沿着邊移動,速度是相同的,問它們碰頭的概率是多少?

解題思路:

如果3只螞蟻方向都相同,一定不會相遇,所以3只螞蟻方向一定有不同。
每隻螞蟻方向數有2種,一共3只螞蟻,一共有 23 = 8 種方向排列。
其中,只有完全順時針和完全逆時針這2種情況下不相遇,所以相遇的概率爲:
(8-2) / 8 = 0.75

男女比例

某地區重男輕女,一個家庭如果生出一個女孩就一直生,直到生出男孩就停止生育。假設一胎只出生一個孩子,問時間足夠長後,男女比例是會變爲多少?

解題思路:

假設這個地區一共有n個家庭:
n/2 的家庭第一胎就生出男孩,所以只有1個孩子。
n/4 的家庭先生1女孩,再生1男孩,有2個孩子。
n/8 的家庭先生2女孩,再生1男孩,有3個孩子。

所以孩子總數爲:
n/2 + (n/4)×2 + (n/8)×3 + (n/16)×4 + … + n/2^n×n = 2 × n
(求解過程:兩邊同乘2,再錯位相減。)
因爲每個家庭都會有一個男孩,所以男孩有n個,則女孩數爲 2n-n = n 個
所以比例爲 1:1

隨機函數

給定一個等概率隨機產生1-5的隨機函數,除此之外,不能使用任何額外的隨機機制,請實現等概率隨機產生1-7的隨機函數。

解題思路:

  1. 等概率隨機函數產生 1、2、3、4、5
  2. 將上述結果-1,將得到 f() ,其結果爲0、1、2、3、4
  3. f() × 5 的結果爲0、5、10、15、20
  4. f() × 5 + f() 的結果爲0、1、2、3、4、5 … 24
  5. 如果步驟4的結果大於20,則重複步驟4,直到結果在0-20之間
  6. 步驟5的結果將等概率隨機產生0-20,所以步驟5的結果**%7**之後就可以等概率產生0-6
  7. 再將步驟6的結果+1即可

等概率產生0和1

給定一個以p概率產生0,以1-p概率產生1的隨機函數f(),p是固定的值,但你並不知道是多少。除此之外也不能使用任何額外的隨機機制,請用f()實現等概率隨機產生0和1的隨機函數。

解題思路:

產生01和10序列的概率都爲 P × (1-P),所以不斷調用f,直到產生的結果爲01或10。如果產生了01,就返回0;如果產生了10,就返回1

出現概率變爲k次方

假設函數f()等概率隨機返回一個在[0,1)範圍上的浮點數,那麼在[0,x)區間上的數出現的概率爲x(0<x<=1)。給定一個大於0的整數k,並且可以使用f()函數,請事先一個函數依然返回在[0,1)範圍上的數,但是在[0,x)區間上的數出現的概率爲x的k次方。

解題思路:

先找出將概率x調整至x2的方法:調用兩次f(),返回較大的數即可。
所以,同理,只需要調用k次f(),返回較大的數即可。

等概率打印

給定一個長度爲N且沒有重複元素的數組arr和一個整數M,實現函數等概率隨機打印arr中的M個數。

解題思路:

0 - N-1中隨機得到一個位置a,打印arr[a],然後將a和N-1進行交換,在從0 - N-2中隨機得到一個位置b,打印arr[b],再與隊尾交換,… ,直到打印了M個數。

概率動態變化-蓄水池抽樣算法

原題:
有一個機器按自然數序列的方式吐出球,1號球,2號球,3號球等等。你有一個袋子,袋子裏最多隻能裝下K個球,並且除袋子以外,你沒有更多的空間,一個球一旦扔掉,就再也不可拿回。設計一種選擇方式,使得當機器吐出第N號球的時候,你袋子中的球數是K個,同時可以保證從1號球到N號球中的每一個,被選進袋子的概率都是k/N。

改編題:
有一個只能裝下10個球的袋子,當吐出100個球時,袋子裏有10個球,並且1-100號中的每一個球被選中的概率都是10/100。然後繼續吐球,當吐出1000個球時,袋子裏有10個球,並且1-1000號中的每一個球被選中的概率都是10/1000。繼續吐球,當吐出 i 個球時,袋子裏有10個球,並且1-i 號中的每一個球被選中的概率都是10/i。也就是隨着N的變化,1-N號球被選中的概率動態變化成k/N。

解題思路—蓄水池抽樣算法:

  1. 處理1-k號球時,直接放進袋子裏。
  2. 處理第 i 號球時,以 k/i 的概率決定是否將第 i 號球放進袋子中。如果不決定將第 i 號球放進袋子,直接扔掉第 i 號球。如果決定將第 i 號球放進袋子,那麼就從袋子裏的k個球中隨機扔掉一個,然後把第 i 號球放入袋子。

證明:

  1. 假設第 i 號球被選中並且 1<=i<=k,那麼在選第 k+1 號球之前,第 i 號球留在袋子中的概率是1。在選第 k+1 號球時,在什麼樣的情況下第 i 號球會被淘汰,只有決定將第 k+1 號球放進袋子,同時在袋子中的第 i 號球被隨機選中並決定扔掉,這兩個時間同時發生時第 i 號球纔會被淘汰。
    也就是說,第 i 號球會被淘汰的概率是 ( k / (k+1) ) × (1/k) = 1/(k+1)。所以第 i 號球留下來的概率爲 1 - 1/(k+1) = k/(k+1)。這是1到k+1號球中第 i 號球被留下來的概率。
  2. 在選第 k+2 號球時,什麼時候第 i 號球會淘汰呢,只有把 k+2 號球放進袋子,同時在袋子中的第 i 號球被隨機選中並決定扔掉,兩件事同時發生時第 i 號球才能被淘汰。
    所以,第 i 號球會被淘汰的概率是 ( k / (k+2) ) × (1/k) = 1/(k+2)。所以第 i 號球留下來的概率爲 1 - 1/(k+2) = (k+1)/(k+2)。那麼,從1到k+2號球中第 i 號球被留下來的概率爲:k/(k+1) × (k+1)/(k+2)。
  3. 以此類推,在選第 N 號球時,第 i 號球最終留在袋子裏的概率爲:
    k/(k+1) × (k+1)/(k+2) × (k+2)/(k+3) × (k+3)/(k+4) × … × (N-1)/N = k/N
  4. 同樣推理,假設第 i 號球被選中並且 k<i<=N,那麼在選第 i 號球之前,第 i 號球進入袋子中的概率是 k/i。在選第 i+1 號球時,在什麼樣的情況下第 i 號球會被淘汰,只有決定將第 i+1 號球放進袋子,同時在袋子中的第 i 號球被隨機選中並決定扔掉,這兩個時間同時發生時第 i 號球纔會被淘汰。
    那麼,第 i 號球會被淘汰的概率是 ( k / (i+1) ) × (1/k) = 1/(i+1)。所以第 i 號球留下來的概率爲 1 - 1/(i+1) = i/(i+1)。所以,從第 i 號球被選中到第 i+1 號球的過程中,第 i 號球留在袋中的概率是 k/i × i/(i+1)。
    所以,在選第 N 號球時,第 i 號球最終留在袋子裏的概率爲:
    k/i × i/(i+1) × (i+1)/(i+2) × … × (N-1)/N = k/N
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章