Re: [機統] 定額下注的賠光機率

看板Math作者 (狗狗)時間5年前 (2019/01/03 21:42), 5年前編輯推噓2(202)
留言4則, 3人參與, 5年前最新討論串3/3 (看更多)
※ 引述《Desperato (Farewell)》之銘言: : D. 結論 : 四題的答案近似值分別為 : 1) ~= 0.000785711 : 2) ~= 0.000000945 | : 3) ~= 0.00152243884034744235876... : 4) ~= 0.00152243884034744481467... : | 寫了一個 JavaScript 代碼模擬遊戲,下方代碼可以用 node.js 執行, 或是開瀏覽器,在網頁右鍵選擇 inspect 找到 console,貼上代碼來執行 ===================================================================== // 宣告函式,不會執行 const WIN = 'win'; const LOSE = 'lose'; const FINISHED = 'done'; const GAME_OVER = 'game over'; function play([win_chances, lose_chances]) { const total = win_chances + lose_chances; if (total == 0) { return [FINISHED, null]; } const result = Math.floor(Math.random() * total); return (result < win_chances) ? [WIN, [win_chances - 1, lose_chances]] : [LOSE, [win_chances, lose_chances - 1]] ; } function game(win_chances, lose_chances, lose_threshold) { let chances = [win_chances, lose_chances]; let result; let current_wins = 0; let current_loses = 0; const play_series = []; while (chances) { [result, chances] = play(chances); // For debug // console.log(`Play ${series.length + 1}: ${result}, running next play with [${turns}]`) play_series.push(result); if (result == WIN) current_wins++; if (result == LOSE) current_loses++; if (current_loses - current_wins >= lose_threshold) { play_series.push(GAME_OVER); chances = null; break; } } return play_series; } function simulate_multiple_games(game_count, win_count, lose_count, lose_threshold) { let finished_counts = 0; let game_over_counts = 0; for (let i = 0; i < game_count; i++) { const play_series = game(win_count, lose_count, lose_threshold); const game_result = play_series.slice(-1).pop(); if (game_result == FINISHED) finished_counts++; if (game_result == GAME_OVER) game_over_counts++; // For debug // console.log(`Game ${i+1}: ${game_result} with ${play_series.length-1} plays`) } return { finished_counts, game_over_counts }; } ===================================================================== 要模擬 100萬次,53勝47負的賽局,起始有16份籌碼的比賽,可執行: simulate_multiple_games(1000000, 53, 47, 16) 我跑了10次,取平均和標準差,得到提早結束比賽 (GAME_OVER) 的發生機會為 ~= 0.0007760 ± 0.0000282 另外直接跑了 1 億次模擬 ~= 0.0007851 跟 Desperato 的計算結果差不多 感謝 D 大 :) 補充 要模擬 100萬次,60勝40負的賽局,起始有16份籌碼的比賽 simulate_multiple_games(1000000, 60, 40, 16) 一樣10次的平均和標準差為 ~= 0.00000710 ± 0.00000285 似乎和 D 大的數據有落差? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.72.90.193 ※ 文章網址: https://www.ptt.cc/bbs/Math/M.1546522960.A.D16.html ※ 編輯: leondemon (223.72.90.193), 01/03/2019 21:58:04

01/03 23:17, 5年前 , 1F
板上神人真的多==
01/03 23:17, 1F

01/04 13:55, 5年前 , 2F
沒錯又算錯了XD 已訂正
01/04 13:55, 2F

01/04 13:59, 5年前 , 3F
~= 0.00000580349 進標準差了 至少數量級正確
01/04 13:59, 3F

01/04 17:18, 5年前 , 4F
感謝!我研究一下公式 :P
01/04 17:18, 4F
文章代碼(AID): #1SBX5GqM (Math)
文章代碼(AID): #1SBX5GqM (Math)