從N卷廁紙同時用完的概率開始

我們可以將廁所坑位中用紙的情況,簡化為一個數學問題,包含如下這些規則:

  1. 假定有n卷廁紙,每卷的長度是 L_n,每個用戶使用的長度都是N;
  2. 用戶在選擇使用哪一卷廁紙時,會將所有長度還大于0的卷筒紙進行從長到短的排序成序列 \{n_i\},隨后以固定的概率在其中進行選擇,將這個概率記為 p(n, i),其中n是長度大于0的廁紙的數量,i是從長到短排序的第i個;
  3. 如果兩卷紙一樣長,則在上一條規則下,固定選擇n更大的那一卷;
  4. 如果發生一卷紙的剩余量不足N的情況,則從第二順位繼續使用,直到用掉N為止;
  5. 工作人員會每m個用戶使用完廁所后去查看,將所有長度不大于 L_T 的廁紙補充到長度 L
  6. 初始狀態下,L_n = L
  7. 用戶是一個個進去的,不考慮兩個用戶同時使用一個坑位的情況。

下面就是問題:在上述情況下,一位用戶進入廁所后發現紙不夠的概率Q,是多少?


假定只有一桶紙,這個問題其實不難。

如果 L_T \ge mN,則顯然有 Q=0

而如果 L_T < mN,情況略復雜一點。

首先,前 T_1 = \lfloor \frac{L-L_T}{N} \rfloor 次肯定是正常的,此時工作人員已經進來檢查過 T_2 = \lfloor \frac{T_1}{m} \rfloor 次,再過 T_m = m - ( T_1 - m T_2 ) 輪后就會補紙。因此,如果剩余的紙量 L_m = L - N T_1 不小于 N T_m,就不會遇到用完紙的情況,否則就會遇到。

所以在只有一卷紙的情況下,會不會用完紙是一個確定的問題,取決于下面這個關系:

\left \lfloor \frac{1}{m} \left \lfloor \frac{L-L_T}{N} \right \rfloor \right \rfloor > \frac{L}{m N} - 1

當這個不等式滿足時,就會發生缺紙。而顯然當 L_T > m N 時,上式是不滿足的,因此不會發生卻紙。而,當 m > \frac{L}{N} 時,上式右側小于 0,而左側為0,從而此時必然會發生缺紙。

或者,我們也可以認為開始檢查紙是否用完的時刻和第一個用戶進入的時刻是不重合的,那么此時就變成了一個概率問題,此時缺紙概率 Q 等于 1 減去廁紙總可用測試減去廁紙開始需要被替換的輪次與 m 的比值:

Q = 1 - \frac{1}{m} \left( \left \lfloor \frac{L}{N} \right \rfloor - \left \lceil \frac{L-L_T}{N} \right \rceil \right)

顯然,當前面提到的不等式滿足時,這里的缺紙概率會小于0,從而不可能發生缺紙。


n=2 開始,情況就不一樣了,這是因為選紙概率 p(n,i) 的存在,使得每一卷紙的使用速度會出現一種“競爭”的狀態。

比如說,只有兩卷紙的時候,長的那卷被使用的概率是p,短的是1-p,那么當 p < 0.5 時,人們會更多選擇使用短的,直到將短的用完了再用長的,所以兩卷紙的長度差是在不斷拉大的,而當短的被用完時因為長的還有,所以有較大概率此時被工作人員補充,所以較不容易同時用完;而如果 p > 0.5,則人們會更多使用長的,所以兩卷紙有更大的概率同時用完。

我們可以將問題做一個轉化,取 L / N 的余數為 Rl = \lfloor \frac{L}{N} \rfloor 為新的長度值,而記 t 輪的長度分布為構型 \phi(t) = \{ l_1, L_2, ..., l_n \},因此每一種構型的概率就是 P(\phi(t))。每一輪都是上一輪構型中的某一位減少1。

下面可以構造構型的權重:

W(\phi(t)) = n \sum_i R_i + N \sum_i l_i

這里只所以使用 R_i 而非前面提到的余數 R,是因為隨著系統的演化,在規則4下,當高位構型分量變為0后,它實際上還可以繼續消耗余數,且能進一步傳遞給前一位,影響前一位的余數。

因此,問題的關鍵就了計算構型概率分布 P(\phi, t),其中最關鍵的就是當構型 \phi(t) 的最高位為滿足臨界條件 \phi_n N + R_n \le L_T 的最大值時它的概率分布 P(\phi_{i}, t_{c,i}),其中下標 i 表示第 i 種這樣的臨界情況。

假定該概率分布已知,由于權重函數有如下性質:

W(\phi(t)) = W(\phi(0)) - t N

而每 m 輪工作人員補紙一次,所以我們可以知道此時剛剛完成了第 T_{1,i} = \lfloor \frac{t_{c,i}}{m} \rfloor 次補紙,下一次補紙還有 T_{2,i} = m (1 + T_{1,i}) - t_{c,i} 輪,而此時剩余的紙總量就是權重值 W_i = n L - t_{c,i} N,因此構型 \phi_i 是否會遇到缺紙的情況,取決于下面這個不等式:

\left \lfloor \frac{t_{c,i}}{m} \right \rfloor = \left \lfloor \frac{n L - W_{c,i}}{m N} \right \rfloor > \frac{n L}{m N} - 1

我們將滿足上述不等式的構型組成集合 \mathrm{OOP} = \{\phi_i | \left \lfloor \frac{t_{c,i}}{m} \right \rfloor > \frac{n L}{m N} - 1\}

顯然,這個集合的關鍵并不是構型本身如何,而是從初態達到該構型需要經歷的總輪次,當然總輪次與構型之間的關系可以由構型的權重來獲得。

因此,最后,會遇到缺紙情況的概率就是下面這個求和:

Q_\mathrm{OOP} = \sum_{\phi_i \in \mathrm{OOP}} P(\phi_i, t_{c,i})

所以,知道 P(\phi, t) 自然也就能知道目標概率 Q_\mathrm{OOP} 了。

或者我們也可以和 n=1 時一樣,認為工作人員換紙是 m 輪內的一個概率事件,從而缺紙概率 Q 等于:

Q = \sum_i P(\phi_i) \times \max \left[ 0, 1 - \frac{1}{m} \left( \left \lfloor \frac{n L}{N} \right \rfloor - t_{c,i} \right) \right]


從用紙規則我們不難發現,對于構型 \phi(t),如果用 \phi(t,i) 來表示該構型中的第 i 位的等效長度 l_i,則有 \forall t,i : \phi(t, i) \le \phi(t, i+1)\ \land\ R_i \le R_{i+1},因此我們也就有:

(n-1) L + L_T \ge W \ge n [N \phi(n) + R_n]

由此可知,當 m > \frac{n L}{N} 時,必然會發生缺紙;而當 L_T \ge \frac{m N}{n} + N 時則必然不會發生缺紙。

由于 \phi(t,n)N + R_n \le L_T,所以我們要討論的可能缺紙的情況就是 \phi(t,n) \le \frac{m}{n} + \left( 1 - \frac{R_n}{N} \right) 的情況,取臨界條件為:

\phi(t,n) < \phi_c = \left \lfloor \frac{L_T - R}{N} \right \rfloor

我們下面用 \phi(t;a_i) 時,不加說明的情況下都認為對應的是構型 \phi(A_i=a_i+\phi_c)

下面先看 n=2 的情況,此時同長時的選擇方案比較簡單。此時將選較短的紙的概率記為 p,因此選較長的紙的概率自然就是 1-p 了。

當末態 \phi(x,0) 臨界條件即缺紙條件為:

\phi_c = \left \lfloor \frac{L_T - R}{N} \right \rfloor\phantom{wwwwwwwwwwwwi}\\ \left \lfloor \frac{2 L - 2 N \phi_c - N x - 2 R}{m N} \right \rfloor > \frac{2 L}{m N} - 1

當考慮到工作人員換紙是概率事件時,缺紙概率為:

Q = \sum_x P(l,l;x,0) \times \max \left[ 0, 1 - \frac{1}{m} \left( \left \lfloor \frac{2 L}{N} \right \rfloor - 2 l + 2 \phi_c + x \right) \right]\\ x < m + 2 \left \lfloor \frac{L}{N} \right \rfloor - \left \lfloor \frac{2 L}{N} \right \rfloor - 2 \left \lfloor \frac{L_T - R}{N} \right \rfloor

同時,我們也知道,一旦某個狀態為 \phi(t, n, n),則下一狀態必然為 \phi(t+1, n, n-1)。因此,比如同樣是從態 \phi(t, n+1, n) 到態 \phi(t+2, n, n - 1) 就可能經過兩條“路徑”:

L_1 : (n+1, n) \rightarrow (n+1,n-1) \rightarrow (n, n-1)\\ L_2 : (n+1, n) \rightarrow (n,n) \rightarrow (n,n-1)\phantom{wwwwa}

而這兩條路徑的概率是不同的,前者為 p(1-p),而后者為 1-p

此時,從初態 \phi(0; l, l) 到態 \phi(t, a, b)(由前面的分析可知 a \ge b)所經歷的所有“路徑”,主要的差異在于其中經歷過幾次兩個分量相等的狀態。

\phi(l,l)(由于 t 可以通過構型計算得到,所以下面除非需要,否則不再顯式地寫出 t)到 \phi(a,b) 最多可以有 l-a-1 次兩分量相等的狀態,而假定一條路徑有 x < l-a 次相等的狀態,則這條路徑發生的概率為(短卷優先的概率記為 p):

P(l) = p^{l-b-1-x} (1-p)^{l-a}

也即,長卷的使用次數固定的情況下,由其產生的概率部分也是固定的,只有短卷使用次數產生的概率會收到相等次數(末態相等不考慮)的影響。因此,最終從初態到末態的總概率就是一個“路徑求和”:

P(l,l;a,b) = (1-p)^{1-a} \sum_l p^{1-b-1-n_l}\\ = (1-p)^{l-a} p^{1-b-1} \sum_n C(l-a,l-b,n) p^{-n}

其中 C(x,y,n) 是低位下降 x 而高位下降 y 的路徑中兩分量相等次數為 n 的路徑的數量。

因此,現在問題就變成了求 C(x,y,n),只要它知道了,原則上就可以知道從初態到末態的概率,從而問題便可知了。

而要知道這個函數,本質上是要知道從初態 \phi(l,l) 到末態 \phi(a,b) 總共有多少條路徑:N(l-a,l-b)。只要知道了 N,那么原則上 C 也就知道了:

C(l-a,l-b,n) = \sum_{l \in L_n} N(l_n-a, l_n-b) \prod_i N(l_{i-1}-l_i, l_{i-1}-l_i)

其中有序數列 \{l_i\} 是長為 n 的由大到小排列的數列,且定義 l_0 = l,所有這樣的數列構成集合 L_n

同樣的方法也適用于 n > 2 的情況,只不過這里 C 和 N 會變得更加復雜,對于有幾位相同的情況的處理也更復雜,但基本邏輯是相同的。

值得注意的是,對于末態 \phi(x,0),由于末態之間我們認為不再存在狀態遷移,所以我們有:

P(l,l;0,0) = 0\phantom{wwwwwa}\\ P(l,l;x,0) = P(l,l;x,1)

所以實際上我們要求的就是從初態 \phi(l,l) 到末態 \phi(x,1) 的概率。

而很顯然,我們首先就可以有如下結果:

P(l,l;l,x < l) = p^{l - 1 - x}

接著:

P(l,l;n-1,n-1) = (1-p) P(l,l;n,n-1)\phantom{wwwwwwwwwwwww}\\ P(l,l;n-1,n-2) = P(l,l;n-1,n-1) + (1-p) P(l,l;n,n-2)\\ P(l,l;n-1,m) = p P(l,l;n-1,m+1) + (1-p) P(l,l;n,m)\phantom{www}

因此有:

P(l,l;l-1,l-m) = (1-p) p^{M(m-2)} [1+M(m-1)p]\\ M(x) = \max(x,0)

以及:

P(l,l;l-2,l-m) = (1-p)^2 p^{A_m} (1 + B_m p + C_m p^2)\\ A_m = M(m - 3)\phantom{wwi}\\ B_m = m - 1\phantom{wwwww}\\ C_m = \frac{m(m-1)}{2} - 1

事實上,我們可以將路徑概率取為如下形式:

P(l,l;d,m) = (1-p)^{l-d} p^{M(d-1-m)} \sum_{i=0}^{l-d} c(l-d,i,l-m) p^i

從而遞推關系為(以下將概率 P(l,l;m,n) 簡寫為 P(m,n)):

\begin{cases} P(n-1,n-1) = (1-p) P(n,n-1)\\ P(n-1,n-2) = P(n-1,n-1) + (1-p) P(n,n-2)\\ P(n-1,m) = p P(n-1,m+1) + (1-p) P(n,m) \end{cases}

由此可得系數函數 c 的遞推關系和邊界條件為:

\begin{cases} c(d,i,m+1) = c(d,i,m) + c(d-1,i-1,m+1)\ ;\ i > 0,m \ge d\\ c(d,i,d) = c(d-1,i,d)\ ;\ i \le d\\ c(d,0,m) = 1\\ c(d,d,d) = 0 \end{cases}

最后得到如下結果:

c(d,i,d+x) = c(d-1,i,d) + \sum_{j=1}^x c(d-1,i-1,d+j)\\ c(x,y,z) = 0\ ;\ if\ y > x\ or\ z < x\ or\ y < 0

不難發現,其實 c 函數的第二位更重要,所以我們可以將上面的結果進一步寫為:

c(d,i,d+x) = \sum_{j=0}^{d-i-1} c(i+j-1,i-1,i+j+1)\\ \phantom{wwaa}+ \sum_{j=1}^x c(d-1,i-1,d+j)\\

從而可以利用 c(d,i-1,m) 來遞歸求出 c(d,i,m),比如前幾項為:

\begin{cases} c(d,0,m) = 1\\ c(d,1,m) = m - 1\\ c(d,2,m) = \frac{(m-2)(m+1)}{2}\\ c(d,3,m) = \frac{(m-3)(m+1)(m+2)}{6}\\ \end{cases}

很有趣,這幾項都和第一個參數 d 無關。事實上,我們可以相信系數函數 c 與第一參數 d 是無關的。

又由于:

P(d,m) = (1-p)^{l-d} p^{M(d-1-m)} \sum_{i=0}^{l-d} c(l-d,i,l-m) p^i

所以我們可以只保留最后求和部分的前三位,從而有:

\begin{cases} P(l,m) = p^{M(l-1-m)}\\ P(l-1,m) = (1-p) p^{M(l-2-m)} [1 + (l-m-1)p]\\ P(l-n,m) \approx (1-p)^n p^{M(l-n-1-m)} \times\\ \ \ \ \ \ \ \ \ \left[ 1 + (l-m-1)p + \frac{(l-m-2)(l-m+1)}{2} p^2 \right] \end{cases}

所以我們最終要計算的缺紙概率為:

Q \approx \left[ 1 + (l-1)p + \frac{(l+1)(l-2)}{2} p^2 \right]\phantom{wwwwwwww}\\ \times \sum_x \left\{ (1-p)^{l-x} p^{M(x-1)}\phantom{wwwwwwwwwwwwwi}\\ \times \left[ 1 - \frac{1}{m} \left( \left \lfloor \frac{2 L}{N} \right \rfloor - 2 l + 2 \left \lfloor \frac{L_T - R}{N} \right \rfloor + x \right) \right] \right\}\\ \approx \left[ 1 + (l-1)p + \frac{(l+1)(l-2)}{2} p^2 \right] (1-p)^l \phantom{wwa}\\ \times \sum_x \left[ (1-p)^{-x} p^{M(x-1)} \left( \frac{m N - 2 L_T - N x}{m N} \right) \right]\\

其中求和范圍為:

0 \le x \le m + 2 \left \lfloor \frac{L}{N} \right \rfloor - \left \lfloor \frac{2 L}{N} \right \rfloor - 2 \left \lfloor \frac{L_T - R}{N} \right \rfloor = r

最后的求和部分實際上可以化簡為:

r \approx m - \frac{2L_T}{N}\\ SUM = \frac{2(1-p)r}{(1-2p)m} + \frac{1-p}{(1-2p)^2m} \left[ \left( \frac{p}{1-p} \right)^r - 1 \right]

是一個只由工作員參數 m 和 L_T 以及用紙參數 N 與 p 決定的、與紙的長度無關的常數。

所以最終結果為:

Q \approx \left[ 1 + (l-1)p + \frac{(l+1)(l-2)}{2} p^2 \right] (1-p)^l \phantom{wwa}\\ \times \left\{ \frac{2(1-p)r}{(1-2p)m} + \frac{1-p}{(1-2p)^2m} \left[ \left( \frac{p}{1-p} \right)^r - 1 \right] \right\}\\

其中第一部分是一個更精確函數的泰勒展開的前三項。第一行是由紙量與用紙模式決定的、與工作員無關的函數,而第二行是由工作員參數與用紙模式決定的、與紙量無關的函數。

當 p 接近1時,我們可以認為該函數只要被 (1-p)^l 項壓抑,隨著 l 的增大會快速減小,也就是說如果絕大多數人傾向于先用短卷紙,那么紙越多越不容易遇到同時用完的情況。

而反過來,如果p接近0,那么第一行幾乎就是常數,是否會同時用完紙完全由工作員參數決定:

SECOND = \left\{ \frac{2(1-p)r}{(1-2p)m} + \frac{1-p}{(1-2p)^2m} \left[ \left( \frac{p}{1-p} \right)^r - 1 \right] \right\}\\ \approx 2(1+p) - \frac{4(1+p)L_T+(1+3p)N}{mN}

可見,隨著補紙間隔 m 的增大,缺紙概率也是跟著一起增大的。這很符合直觀估計,因為如果大部分人是看到較多的紙就用,那就表示兩卷紙很可能同時用到臨界量,而此時下面是否會出現有人缺紙就完全取決于工作人員什么時候進來補紙了。


我們發現,這里最有趣的在于函數 c,我們猜測它與第一參數 d 是無關的,所以可以構造如下函數(忽略第一參數):

F(m;z) = \sum_{i=0}^m c(i,m) z^i

缺紙概率第一項完全由該函數控制。為了更好地研究該函數,就需要找出系數函數 c 的具體形式。

我們可以取如下形式的函數:

c(i,m) = \frac{(m-i)(m+i)!}{(m+i)i!m!}

通過驗證發現,它的確就是我們所要的函數(猜這個函數所化的時間真的是遠多于驗證啊……),從而我們有:

F(m;z) = \sum_{i=0}^m \frac{(m-i)(m+i)!}{(m+i)i!m!}z^i

因此路徑概率函數為:

P(d,m) = (1-p)^{l-d} p^{M(d-1-m)} F(l-d,l-m;p)

同樣的,缺紙概率函數現在也可以用上述函數改寫,不過由于存在高階項且不同求和項保留的高階項數量不同,因此形式會比上面的更復雜。


對于 n>2 的情況,原則上也可以用這里的方法給出,不過形式上就太過復雜了,這里暫且不考慮展開。

但我們可以猜測,缺紙概率可以寫為如下形式:

Q_n = F(l;\{p_i\}) \left[ A(\{p_i\}) \frac{r_n}{m} + B(\{p_i\}) \Delta(m,\{p_i\},r_n) \right]

其中第一部分在最短紙選擇概率足夠大時會迅速下降為0,而當最多紙選擇概率足夠大時則基本保持不變。當更多用戶選擇最多紙時,系統的行為依然由 \frac{r_n}{m} 控制,后面的部分只是起到調節作用。


最后,總結一下,就是,大家上廁所用紙的時候,請盡量選擇少的那卷先用,因為,如果所有人都這樣的話,就不會遇到你上廁所結果發現紙用完的尷尬情況了。

嗯……一篇很有味道的計算題……


本文遵守創作共享CC BY-NC-SA 4.0協議

通過本協議,您可以分享并修改本文內容,只要你遵守以下授權條款規定:姓名標示非商業性相同方式分享
具體內容請查閱上述協議聲明。
紙媒與網絡平臺如需轉載必須與本人聯系確認。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。