Re: [機統] 定額下注的賠光機率
※ 引述《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
01/04 13:55, 2F
→
01/04 13:59,
5年前
, 3F
01/04 13:59, 3F
→
01/04 17:18,
5年前
, 4F
01/04 17:18, 4F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):
機統
1
2