平均需要拋擲多少次硬幣,才會首次出現連續的 2個正面?
首先,讓我們來考慮這樣乙個問題: k 枚硬幣擺成一排,其中每一枚硬幣都可正可反;如果裡面沒有相鄰的正面,則一共有多少種可能的情況?這可以用遞推的思想來解決。不妨用 f(k) 來表示擺放 k 枚硬幣的方案數。我們可以把這些方案分成兩類:最後一枚硬幣是反面,或者最後一枚硬幣是正面。如果是前一種情形,則我們只需要看前 k - 1 枚硬幣有多少擺法就可以了;如果是後一種情形,那麼倒數第二枚硬幣必須是反面,因而這種情形下的方案數就取決於前 k - 2 枚硬幣的擺放方案數。因此我們得到, f(k) = f(k - 1) + f(k - 2) 。由於擺放一枚硬幣有兩種方案,擺放兩枚硬幣有三種方案,因而事實上 f(k) 就等於 fk+2 ,其中 fi 表示 fibonacci 數列 1, 1, 2, 3, 5, 8, …的第 i 項。
而「拋擲第 k 次才出現連續兩個正面」的意思就是,最後三枚硬幣是反、正、正,並且前面 k - 3 枚硬幣中正面都不相鄰。因此,在所有 2k 種可能的硬幣正反序列中,只有 fk-1 個是滿足要求的。也就是說,我們有 f1 / 4 的概率在第二次拋幣就得到了連續兩個正面,有 f2 / 8 的概率在第三次得到連續兩個正面,有 f3 / 16 的概率在第四次得到連續兩個正面⋯⋯因此,我們要求的期望值就等於:
讓我們先來說說什麼是生成函式吧。生成函式就是對數列進行編碼的一種方式。我們可以用乙個含有無限多項的多項式(注:這個說法是不準確的,有無限多項的不能叫多項式) a1 · x1 + a2 · x2 + a3 · x3 + … 把整個數列的全部資訊裝進去,其中第 i 次項係數就表示數列的第 i 項。因此,fibonacci 數列的生成函式就可以寫成:
厲害就厲害在,我們可以把生成函式表示成乙個更簡單的形式。先來看看 g(x)·x 的結果:
再看看 g(x) + g(x)·x 的結果:
你會發現, fibonacci 數列的遞推性質,使得上面這行式子與 g(x) 本身非常相像。事實上,如果把 g(x) 的每一項都除以 x ,再減去最前面多出來的 1 ,就能得到上面的這行式子了。因此,我們有:
我們甚至可以就此解出 g(x) 來:
於是,整個無窮級數 g(x) 被我們化簡為了乙個關於 x 的代數式!注意,雖然這個等式只在 x 充分小(小到級數 g(x) 收斂)的時候才有意義,不過這並不妨礙我們用這個代數式來代表 fibonacci 數列的生成函式。我們可以把 fibonacci 數列看作是生成函式的乙個「展開」:
也就是說,這麼乙個小小的代數式就容納了 fibonacci 數列的全部資訊!
生成函式是如此地具有代表性,以至於在研究數列時,我們常常會給出它的生成函式。在數列百科全書 oeis 中,生成函式幾乎是必不可少的一項。例如,在 fibonacci 數列 的描述中,formula 一欄的第一行就是 g.f.: x/(1-x-x^2) ,說的就是 fibonacci 數列的生成函式(generating function)。
更絕的是,我們還可以直接對數列的生成函式進行變換,從而得到新的數列。比方說,在生成函式上再乘以乙個 x ,我們就會讓每一項的 x 的指數加 1 ,從而讓整個數列右移一位,得到了乙個新的數列 fi-1,即 0, 1, 1, 2, 3, 5, …
現在,我們需要用各種代數運算手段,對等式左邊的生成函式進行變換,讓等式右邊的展開式變成本文開頭的那個數列。什麼操作能夠同時讓數列第 1 項除以 2 ,第 2 項除以 4 ,第 3 項除以 8 ,以此類推,讓所有的第 i 項都除以 2i 呢?我們可以把所有的 x 都用 x / 2 來替代:
化簡一下:
這就是數列 fi-1 / 2i 的生成函式了。接下來,我們想要讓第 i 項係數乘以乙個 i ,也就是想要讓每一項的係數都乘以該項的次數,這該怎麼辦呢?最神奇的地方出現了——我們對生成函式進行求導:
也就是:
不過,求導的同時,x 的次數也移動了一位。我們在生成函式上再乘以 x ,把 x 的次數糾正回來:
這就是本文最初的那個數列的生成函式了。令 x = 1 ,便有:
硬幣概率問題
一 利用不均勻硬幣產生等概率 問題描述 有一枚不均勻的硬幣,丟擲此硬幣後,可用foo 表示其結果。已知foo 能返回0和1兩個值,其概率分別為0.6和0.4。問怎麼利用foo 得到另乙個函式,使得返回0和1的概率均為0.5。問題分析 分析連續丟擲兩次硬幣的情況,正反面的出現有四種情況,概率依次為 1...
概率題(扔硬幣)
a 有 n 個硬幣,b 有 n 1 個硬幣,誰丟的正面多誰贏,問 a 不輸的概率?注意 不輸二字 我看了一些網上的答案,大多數寫的不是很流暢,所以我嘗試寫乙個清晰易懂的解法,相信小白也可以看懂。首先考察另乙個問題 我們分兩個階段來扔硬幣,假設在第一階段a扔了 n 枚硬幣,b扔了 n 枚硬幣。並且我們...
投擲硬幣(概率dp)
小hi有一枚神奇的硬幣。已知第i次投擲這枚硬幣時,正面向上的概率是pi。現在小hi想知道如果總共投擲n次,其中恰好m次正面向上的概率是多少。input 第一行包含兩個整數n和m。第二行包含n個實數p1,p2,pn。對於30 的資料,1 n 20 對於100 的資料,1 n 1000,0 m n,0 ...