2017年10月11日 星期三

訓練數學感 150 ─ 沒有心臟病的機會有多高?

http://4rdp.blogspot.com/2017/10/150.html

這裡的「心臟病」是指撲克牌一種遊戲玩法,一付撲克牌 52 張,以 A,2, ... ,10,J,Q,K 分別代表數值 1,2, ... ,10,11,12,13,一群人圍坐在一起,撲克牌充分洗牌後蓋起來放在中間,大家輪流翻一張牌,並且依續喊出 1,2, ... ,10,11,12,13,當遇到喊出數值跟牌張配對時,大家就伸手搶蓋牌,最下層的人有權利從上往下打反應遲鈍玩家的手背。

這裡的問題,請問翻完 52 張牌,遇不到「心臟病」的機會有多高?

這題目是突然想到的,有興趣的朋友研究一下吧。

30 則留言:

  1. 這問題似乎與錯排問題(https://zh.wikipedia.org/wiki/%E9%94%99%E6%8E%92%E9%97%AE%E9%A2%98)有一些關係

    回覆刪除
    回覆
    1. 是的,這是一個跟錯排有關的問題,但是它又涉及四門花色混雜替代,因此有些複雜,請大家繼續思考。

      刪除
  2. 0.016384284
    我把模擬程序運行了10000次,得到這個概率。XD

    回覆刪除
    回覆
    1. https://drive.google.com/file/d/0B4TlH9zrLruwbGpRVWNWaXVkcmc/view?usp=sharing
      下載enable macro後,按Alt+F8呼叫出宏界面,執行。
      設定方面,H2格是運行次數,G4黃色格是當前得到的累積概率。

      刪除
    2. 忘了說,先要切換到工作表2。
      正在跑十萬次的測試……
      想請教,隨機測試的話,通常要跑多少次才能確定一位小數位?

      刪除
    3. 老師厲害,用蒙地卡羅法求解,關於數值精度,實驗十次小數第一位,百次小數第二位,千次小數第三位,以此類推。

      刪除
    4. 原來這就是蒙地卡羅法……哈哈,我搜索了一下,還真是。
      其實,叫“大量隨機抽樣分析”之類的名字不好嗎?
      關於精度,我查閲了一些文獻,結論是試驗次數每增加100倍,精度增加1位小數;
      100次,精確到0.1;
      10000次,精確到0.01;
      以此類推。
      看來用這種方法需要一部CPU強勁的電腦才行。

      刪除
    5. 我用投擲硬幣試了一下,1億次(10^8)投擲後,得到正面的概率是0.49999037
      確實只精確到了萬分之一。

      刪除
    6. 這樣啊,每一百倍增加一位小數,看來真的需要計算力強大的電腦。

      刪除
  3. 百萬次(10^6)的測試結果,是0.01616107

    回覆刪除
    回覆
    1. 老師好有耐性,跑一百萬次!!

      刪除
    2. 正在跑一億次,目前跑到一千萬,0.016224……
      估計還要跑幾天。
      其實是電腦跑嘛,我抽空看一眼就好。

      刪除
    3. 我原本想如果出現重復的循環數位或者雙零,就可以化成分數了,
      最後用分數倒推回概率算式,就能知道準確的概率了。

      刪除
    4. 哈,說的也是,一百萬次跑幾天?

      刪除
    5. 我剛才粗略算過,現在這部電腦1秒能計算大約200次。
      1000000/200 = 5000(秒),一個半小時多,不到兩小時。
      一億次就是100倍,約5天多……
      所以,下星期見……XD

      刪除
  4. 回覆
    1. 我還以為是 0.0161616...

      刪除
    2. 接近七千萬次,0.0162320……終於看到0了,有希望!

      刪除
    3. 剛按完發佈就馬上不是0了……黑
      前三位162已經確定下來了,跑完一億次第四位也能確定了。
      不過第四位的3很久都沒有變過了,估計到時也不會變了吧。

      刪除
    4. 我覺得等跑完這個,有必要弄一個1/10000精度的小數表,
      方便查閲相關的分數值。
      輸入前幾位小數,就可以查出最接近的分數

      刪除
    5. 小數反查分數表,這是不錯的點子。

      刪除
    6. https://www.digikey.tw/zh/resources/conversion-calculators/conversion-calculator-fractions

      刪除
    7. 0.016236306
      這是一億次計算的最終結果。
      由於只能精確到萬分之一,所以應該是0.01623x
      這部電腦已經盡力了。

      刪除
    8. 老師的電腦辛苦了!^_^

      刪除
  5. 先參考一下這題古典的機率問題The random matching problem. http://highscope.ch.ntu.edu.tw/wordpress/?p=32727 範例六。 如果flyingdusts 使用蒙地卡羅法模擬: 1~52, 搭配1~52 全部不中的機率看看與上面連結的計算結果是否一致?

    如果正確,那麼把條件 n = 1 ~ 52 搭配 n mod 13 = 0 的條件,應該還要再花一點功夫,再把 match problem 改寫。就應該是心臟病的機率解法了。

    回覆刪除
    回覆
    1. 是的,謝謝提供驗證方法。

      刪除
    2. XD
      一驗證馬上發現結果不一致……
      感謝提供驗證方法。

      刪除
    3. 哇,那不就要先除錯後再重跑程式?

      刪除
  6. 請參考一下這裡面的解答。
    https://study.mymoe.moe/math/pixmicat.php?res=5985

    回覆刪除
    回覆
    1. 哇,去年五月就有人討論了,而且電腦模擬結果相近,這機率計算,分母應該用 52!,讓每一種排列都出現一次。

      刪除