1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
// 3%の確率に少なくとも1回成功する確率が85%を超えるのは何回挑戦したときか const p = console.log; const probabilityOf = (percent) => { return Math.random() * 100 < percent; }; const timesのうちpercentの確率に少なくとも1回成功したらtrue = (percent, times) => { for (let i = 0; i < times; i++) { if (probabilityOf(percent)) { return true; } } return false; }; const timesのうちpercentの確率に少なくとも1回成功する割合 = (percent, times, n) => { let cnt = 0; for (let i = 0; i < n; i++) { if (timesのうちpercentの確率に少なくとも1回成功したらtrue(percent, times)) { cnt++; } } const proportion = (cnt * 100.0) / n; return proportion; }; const logxy = (x, y) => { return Math.log(y) / Math.log(x); }; const timesのうちpercentの確率に少なくとも1回成功する割合の解析解 = (percent, times) => { return (1 - Math.pow(1 - percent / 100.0, times)) * 100; }; const main = () => { const percent = 3.0; let times = 63; const n = 100000; p(`${times}回のうち${percent}%の確率に少なくとも1回成功する割合`); p('計算解 : ' + timesのうちpercentの確率に少なくとも1回成功する割合(percent, times, n)); p('解析解 : ' + timesのうちpercentの確率に少なくとも1回成功する割合の解析解(percent, times)); }; main(); |
1 2 3 |
63回のうち3%の確率に少なくとも1回成功する割合 計算解 : 85.325 解析解 : 85.32360949640706 |