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 |
'use strict'; /** * 1から365までのランダムな値を1つ返す関数 */ const randomBirthday = () => Math.floor(1 + Math.random() * 365); /** * 該当する部屋であればtrueを返す関数 */ const test1Room = ({ humanNum }) => { const box = []; for (let i = 0; i < humanNum; i++) { const birthDay = randomBirthday(); if (box.includes(birthDay)) { // かぶった return true; } // かぶらなかったものを配列に追加する box.push(birthDay); } // 1回もかぶらなかった return false; }; const main = () => { const humanNum = 23; const times = 1000000; const doTheTest = () => test1Room({ humanNum }); let count = 0; for (let i = 0; i < times; i++) { if (doTheTest()) { count++; } } const resultProbabilityPercent = (count * 100) / times; console.log( '23人のうち少なくとも1組以上同じ誕生日の人がいる確率', resultProbabilityPercent ); }; main(); |
1 |
23人のうち少なくとも1組以上同じ誕生日の人がいる確率 50.7593 |