答案是矩陣裡的每個元素都是 1/49 (下一期開出某個號碼的機率),完畢。 寫這篇的目的並不是真的想要得到"明牌",只是找個題目練習一下 Python 與馬可夫模型;另一方面,樂透是大家都感興趣的題目,希望這樣應該比較容易理解,並不是真的可以算出明牌,如果有執迷不悟的,本文最後會說明為什麼。 馬可夫鏈 是機率問題中很常使用的模型,近年來因為大數據盛行,每個領域需要網路爬蟲收集大量資料 (分析關鍵字), 自然語言處理 (NLP) 於是成為很熱門的領域,而 Markov model 是 使用統計方法處理自然語言時常用的方法,google 也是 使用 Markov model 來為每個網頁做 ranking。基本原理是,把每個網站當作節點,然後把連入與連出的連結當作是每個節點的連線,那抵達某個特定節點的機率就代表該頁面 (page) 的知名度;越容易抵達某個網頁代表被很多網頁參考,也就是該網頁知名度越高。 簡單來說,馬可夫模型主要就是從這個狀態到下一個狀態給定機率 P,而目前狀態到所有下一個狀態的機率總和一定為1。馬可夫矩陣可以用下圖表示: 上圖用大樂透來說明的話,本文要來練習的題目,目標是 統計出 106 年度每個號碼跟下期號碼之間的機率 ,i, j 都是 49,例如: P 25,49 代表本期開 25 號而下一期開 49 號的機率,而 P 25,1 P 25,2 ... P 25,49 加總起來會是 1。 再說一次,機率理論值其實都是 1/49,這邊只是練習馬可夫模型與 Python ,因為樣本數太小,人很容易會覺得每期的號碼之間有關連,但是純粹只是機率問題。當統計的期數越多,其實會發現機率會越接近 1/49,本文只是幫助理解/說明與練習。 首先從網路上找到 106 年開獎的資料,內容如下,把內容存成 csv 檔案。Index 代表每一期開獎的號碼,Drop是落球順序,Seq是排序後的開獎順序,Special是特別號。 Index,Month,Day,Weekday,Drop1,Drop2,Drop3,Drop4,Drop5,Drop6,Seq1,Seq2,Seq3,Seq4,Seq5,Seq6,Special 1,1,3,二,18,41,47,49,22,42,18,22,41,42,47,49,45