看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《o07608 (無良記者)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : VC++ 2013 : 問題(Question): : 我不太確定這種問題能否在這邊發問,不過還是會試著盡量詳述我的問題與想法 : 這次有個功課,是要寫一個能夠計算扔n次骰子,出現的點數和的機率 : 比方說,扔一次骰子,點數會有1~6,機率各是1/6 : 扔兩次骰子,點數會從2~12,機率則會分別是{1,2,3,4,5,6,5,4,3,2,1}/36 用組合數來試試 擲一次骰子,各種點數的組合數 點數 1 2 3 4 5 6 組合數 1 1 1 1 1 1 擲兩次骰子 點數 1 2 3 4 5 6 7 8 9 10 11 12 組合數 0 1 2 3 4 5 6 5 4 3 2 1 假設擲第n次,點數P的組合數有 S(P,n)種 S(P,n) = S(P-6,n-1) + S(P-5,n-1) + S(P-4,n-1) + S(P-3,n-1) + S(P-2,n-1) + S(P-1,n-1) 例如,擲第3次時,點數8的組合數有: 前兩次點數和2,第3次點數6: 1種組合 前兩次點數和3,第3次點數5: 2種組合 前兩次點數和4,第3次點數4: 3種組合 前兩次點數和5,第3次點數3: 4種組合 前兩次點數和6,第3次點數2: 5種組合 前兩次點數和7,第3次點數2: 6種組合 總計 1+2+3+4+5+6=21種 擲第3次時,點數9的組合有 前兩次點數和3,第3次點數5: 2種組合 前兩次點數和4,第3次點數4: 3種組合 前兩次點數和5,第3次點數3: 4種組合 前兩次點數和6,第3次點數2: 5種組合 前兩次點數和7,第3次點數2: 6種組合 前兩次點數和8,第3次點數1: 5種組合 總計 2+3+4+5+6+5=25種 所以,擲3次骰子的點數與組合數是 點數 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 組合數 0 0 1 3 6 10 15 21 25 27 27 25 21 15 10 6 3 1 有了擲3次骰子的結果,可以算出擲4次骰子的組合數 點數 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 組合數 0 0 0 1 4 10 20 35 56 80 125 146 125 80 56 35 20 10 4 1 104 140 140 104 由第1次擲骰子開始,用迴圈算出第2次,第3次...第N次的組合數 然後就可以算出第N次的機率 不過32位元整數會在第12次擲骰子時溢位(6^12 = 2176782336 > 2147483648 = 2^31-1) 超過12次需要用長整數來計算 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.195.162.56 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1421690056.A.2AF.html
cismjmgoshr: 用excel可以快速的建表算出來 http://ppt.cc/gXby 01/20 02:39
cismjmgoshr: http://codepad.org/nwHwc7nk 試寫,最多扔20次骰子 01/20 22:28