スキルレベル1~7に拡張したのと、一応たくわえた回数で確率が変わる場合も加味出来るように書き直してみた
const LOOP_NUM = 100000000; // スキル効果量 const ENERGY_LISTS = [ [600, 1020, 1500, 2040, 2640, 3300, 4020, 4920, 6180, 7980, 10980], [853, 1450, 2132, 2900, 3753, 4691, 5715, 6995, 8786, 11345, 15610], [1177, 2001, 2943, 4002, 5179, 6474, 7886, 9652, 12124, 15655, 21540], [1625, 2763, 4063, 5526, 7151, 8939, 10889, 13327, 16740, 21615, 29740], [2243, 3813, 5607, 7626, 9869, 12336, 15028, 18393, 23103, 29832, 41047], [3099, 5268, 7747, 10536, 13635, 17044, 20763, 25412, 31920, 41217, 56712], [4502, 7653, 11255, 15307, 19809, 24761, 30163, 36916, 46307, 59876, 82386] ] // 「はきだす確率/(たくわえる確率+はきだす確率)」 const P_LIST = [0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 1]; // ←未定、ここを書き換える for (let slv = 0; slv < 7; slv++) { // スキルレベルごとのエナジー一覧 const energyList = ENERGY_LISTS[slv]; // エナジー let energy = 0; // たくわえた回数 let i = 0; for (let loop = 0; loop < LOOP_NUM; loop++) { let rand = Math.random(); if (rand < P_LIST[i] || i == 10) { // はきだす発生、またはたくわえた回数が10回のとき // たくわえた回数に応じてエナジーを加算 energy += energyList[i]; // たくわえた回数を0に戻す i = 0; } else { // はきだす不発 // たくわえた回数を1増やす i++; } } console.log(slv + 1, energy / LOOP_NUM); }
思ったけどそもそも10回蓄えた後11回目にはきだすが発生する確率って100%なのか…?
通報 ...