ポケモン剣盾のIDくじの確率計算機を作りました(理論値)
ポケモン剣盾のIDくじの確率計算機を作りました。
持っているポケモンのIDの数(厳密にはIDの種類の数)を入力することで当選の確率を表示させることができます。
あくまでも無作為にポケモンのIDを抽出することを想定しているため、IDの偏りには対応しておりません。(例:持っているポケモンのIDの種類は100種類だが、すべてのポケモンのIDについて一桁目が”1”であるなど)
ポケモン剣盾のIDくじの確率計算機を作りました(理論値)
使い方は簡単です。
下記のテキストボックス(入力するところ)に半角数字かつ整数で持っているポケモンのIDの数を入力しましょう。
右の「計算する」ボタンを押せば、それぞれの報酬についてどれくらいの確率で手に入れることができるのかについて表示されます。
装飾は凝っていないのでかなり簡素です。
例として誰ともポケモン交換せず、自分のポケモンのIDのみ(一種類)しか持っていないとします。
すると計算結果は次のようになります。
5桁一致(マスターボールGET):
0.001000%
4桁一致(ふしぎなアメGET):
0.009000%
3桁一致(ポイントマックスGET):
0.090000%
2桁一致(ポイントアップGET):
0.900000%
1桁一致(モーモーミルクGET):
9.000000%
何らかに当選する確率は10%になりますね。
マスターボールを手に入れる確率は0.001%なのでほぼ手に入れられないと見て良いでしょう。
また、100種類のポケモンのIDを持っている場合は確率は以下のようになります。
5桁一致(マスターボールGET):
0.099951%
4桁一致(ふしぎなアメGET):
0.895116%
3桁一致(ポイントマックスGET):
8.525719%
2桁一致(ポイントアップGET):
53.875981%
1桁一致(モーモーミルクGET):
36.600578%
何らかに当選する確率は95%超に上がりました。(持っているポケモンのIDについて、下位一桁が10種類すべて持っている方は何かしらに絶対当選します)
ポイントアップが貰える確率は何と50%を超えています。
マスターボールをもらえる確率は約0.01%と低いままですが、ここまで来るとIDくじをやるメリットがかなり大きいです。
今回のポケモン剣盾のIDくじの確率計算機はGitHubでソースコードを公開しております。
https://chico27.github.io/pokemon-id-lottery-simulation/
中のロジック、計算部分に関してはソースコードを見ていただければと思います。
計算式は書くのが面倒なのでソースのjs部分のロジックを抜粋して掲載いたします。
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 |
function calcPokemonId(){ var valiationNum = document.getElementById('pokemonId').value; const PatternX1 = 10*1*1*1*1*1; const PatternX2 = 10*10*1*1*1*1; const PatternX3 = 10*10*10*1*1*1; const PatternX4 = 10*10*10*10*1*1; const PatternX5 = 10*10*10*10*10*1; let soloX1 = PatternX1/10**6; let soloX2 = PatternX2/10**6; let soloX3 = PatternX3/10**6; let soloX4 = PatternX4/10**6; let soloX5 = PatternX5/10**6; let x1 = 1-(1-soloX1)**valiationNum; let x2 = 1-(1-soloX2)**valiationNum-x1; let x3 = 1-(1-soloX3)**valiationNum-x2-x1; let x4 = 1-(1-soloX4)**valiationNum-x3-x2-x1; let x5 = 1-(1-soloX5)**valiationNum-x4-x3-x2-x1; document.getElementById('5IdHit').innerHTML = (x1*100).toFixed(6) + "%"; document.getElementById('4IdHit').innerHTML = (x2*100).toFixed(6) + "%"; document.getElementById('3IdHit').innerHTML = (x3*100).toFixed(6) + "%"; document.getElementById('2IdHit').innerHTML = (x4*100).toFixed(6) + "%"; document.getElementById('1IdHit').innerHTML = (x5*100).toFixed(6) + "%"; }; |
ディスカッション
コメント一覧
恐らくですが、計算結果の表示が5桁のものが1桁のものになっているように、正しく表示されているものが3桁のものだけではないかと思います。
コメントありがとうございます。
ちなみにどこを直せば良いか分かりますか?