【WEBアプリ】ハナハナホウオウ天翔のベル確率を差枚数から逆算するツール
ハナハナホウオウ天翔のベル確率逆算ツール
※ご使用は自己責任でお願いいたします。
スイカ確率やチェリー確率はいじれるようにしているので、ご自身で適当な値に修正してください。
(ハナハナホウオウ天翔のベル確率予想値はこちら)
(設定判別ツールはこちら)
ツールの下に記載したので、興味のある方はそちらをご覧ください。
ツールの解説
お世話になっております、スログラミングです。
とりあえず普通に自分で使ってみたかったので、解説は後回しにしました。
こんな感じでWEB上で動作するツールをWEBアプリっていうらしく、前々からコード紹介や解説だけじゃなくてWEBアプリも作りたいなーと思ってました。
が、私の調べ方が悪いのか、作り方は見つかっても公開の仕方はなかなか見つからなかったんですよね。
ということで、今回はどうやってWEBアプリを作成して公開するかという話と、ベル確率を逆算する方法あたりの内容を説明していきたいと思います。
(ベル確率の逆算方法はハナハナのベル確率算出と同じ内容なので薄めで。)
本日のアジェンダはこちら。
1. WEBアプリの作り方
結論からいうと、一番手っ取り早いのは「HTMLにJavaScriptを直書き」です。
(解説書いてて気づきましたが、今回みたいに四則演算だけなら普通にHTMLだけでできるっぽいですね。)
具体的な説明に入る前に、まずは今見てるこのブログがどうやって表示されてるのかを理解しておく必要があります。
それがこの図です。(間違いがあるかもしれませんが、あくまで私の簡易理解としてご承知ください。)
このブログもそうですが、ホームページはHTMLっていう言語で書かれていて、私たちのPCやスマホはネット経由でこのHTMLを取得しています。
で、そのままHTMLを表示しても私たちにはなんのこっちゃさっぱりわからないので、PCやスマホに入っているWEBブラウザがHTMLを解釈して表示してくれてます。
そうすると、まず思いつくのが「じゃあHTMLにWEBアプリ作っておけばいいじゃん!」ってことですね。
はい、正解です。それが一番手っ取り早いのは「HTMLにJavaScriptを直書き」って言った方法ですね。
ただ、これにはちょっと問題があります。
WEBブラウザは基本的にHTMLとJavaScriptしかわかりません。
(あいやー、Python使えんのかい。。)
一応特別なWEBブラウザを使えば他の言語でもいけるらしいですが、それだと皆さんに使ってもらうにはハードルが高いですよね。
ということで、もう一つの方法がこれ。
計算とかはサーバーでやって、入力とか出力のデータをブログとやりとりする形です。
これだと、自分の好きな言語でWEBアプリが作れます。
ただ、サーバーをレンタルするとか、データのやりとりをどうするかとかが面倒です。
他にも色々方法はあるかもしれませんが、基本的にはこの二つがWEBアプリを作って公開する方法だと思います。
で、今回はコーディング以外の余計な事をしたくなかったので、「HTMLにJavaScriptを直書き」しました。
2. ベル確率を逆算する方法
まずは、どうやってベル確率を逆算するかという話ですね。
ちょっとシンプルに役がベルとBBしかないスロットを仮定して、3Gだけ回したときで計算していきます。
まずは3G目間ずっとハズレだった場合、差枚数はこうなります。
G数 | 役 | IN枚数 | OUT枚数 | 差枚数 |
---|---|---|---|---|
1 | ハズレ | 3 | 0 | -3 |
2 | ハズレ | 3 | 0 | -6 |
3 | ハズレ | 3 | 0 | -9 |
次に2G目にベルを引いたときはこうなります。
G数 | 役 | IN枚数 | OUT枚数 | 差枚数 |
---|---|---|---|---|
1 | ハズレ | 3 | 0 | -3 |
2 | ベル | 3 | 10 | 4 |
3 | ハズレ | 3 | 0 | 1 |
3G間ずっとハズレなら差枚数は-9枚になるはずなのに、差枚数が1枚になっています。
つまり、どこかでベルを1回引いて10枚獲得したことがわかります。
最後に2G目にベル、3G目にBBを引いた場合はこうなります。
G数 | 役 | IN枚数 | OUT枚数 | 差枚数 |
---|---|---|---|---|
1 | ハズレ | 3 | 0 | -3 |
2 | ベル | 3 | 10 | 4 |
3 | BB | 3 | 243 | 244 |
3G間ずっとハズレなら差枚数は-9枚になるはずなのに、差枚数が244枚になっています。
ここで、データランプを見れば、BBを1回引いていることがわかります。
この場合、差枚数は-9枚に+243枚した234枚になるはずですが、それより10枚多い差枚数になっています。
つまり、どこかでベルを1回引いて10枚獲得したことがわかります。
これを計算式にすると、こうなります。
ベルでの獲得枚数 = BBの枚数 * BBの回数 - 総回転数 * 3
ベルの回数を算出するには、ベルの獲得枚数で割れば良いのでこうなります。
ベルの回数 = (BBの枚数 * BBの回数 - 総回転数 * 3) / ベルの枚数
そうすると、最終的に算出したいベル確率は、総回転数で割ればよいのでこうなります。
ベル確率 = (BBの枚数 * BBの回数 - 総回転数 * 3) / (ベルの枚数 * 総回転数)
計算上はこれでOKですが、これだと1/3なら0.333と小数点で表示されてしまってわかりづらいので、分母が表示されるように逆数にします。
ベル確率 = (ベルの枚数 * 総回転数) / (BBの枚数 * BBの回数 - 総回転数 * 3)
これでベル確率が算出できました。
実際にはBB以外にもRBやリプレイ、チェリー、スイカ等の獲得枚数も考慮する必要がありますが、基本的な考え方はこれでおわかりいただけたと思います。
3. ベル確率の逆算ツールのコーディング
ここからはHTMLとJavaScriptのコーディングに入っていきます。
まず、何をどこに書けばいいんやって話ですが、このブログ記事でいうと、↓のような感じになっています。
HTMLでJavaScriptをサンドイッチしてるような形ですね。
<div>HTMLでツールの説明とかを記載<div> <script type="text/javascript"> //JavaScriptのコードを記載 </script> <form name="form"> //HTMLで入力フォーム等を記載 </form> <div>解説記事を記載<div>
全部作るとごちゃごちゃしてわかりづらいので、先ほど例に出した役がベルとBBしかないスロットを仮定して作っていきます。
3.1. HTMLの部分
まずは、HTMLで入力フォームやボタンを作っていきます。
入力フォームはHTMLでこれで作れます。
typeを指定すると「入力できるのは数字だけ」とか指定できるので、今回のように数字だけ入れて欲しい時は便利です。
<label>ゲーム数:<input type="number" name="play"></label> <label>BB回数:<input type="number" name="bb"></label> <label>差枚数:<input type="number" name="dif"></label>
次に計算を開始するボタンをHTMLに追加しておきます。
onclickにこれからJavaScriptで作成する関数名を指定しておくことで、ボタンを押されたときに実行する関数を指定できます。
(Pythonのdefみたいな感じ。)
<input type="button" value="ベル確率逆算" onclick="bellcalc()">
また、結果を出力する場所は先ほどの入力フォームで、readonly=""を追加しておけばOKです。
(英語そのままの意味で、入力できない場所になります。)
<label>ベル確率:<input type="text" name="bell_k" readonly=""></label>
HTMLの部分はこれでOKです。
3.2. JavaScriptの部分
次にJavaScriptで実際の計算部分をコーディングしていきます。
先ほど計算を開始するボタンで指定した関数名の欄を作ってその中にコードを記載していきます。
function bellcalc() { //ここに計算式を記載 }
といっても計算式は簡単な四則演算なので説明はスキップするとして、困る部分は入力フォームの値を受け取るところと、計算結果を渡すところくらいだと思います。
入力フォームから値を受け取るには、↓のような形で、「eval(formの名前.入力フォームの名前.value)」でOKです。
ゲーム数=eval(form.play.value) BB回数=eval(form.bb.value) 差枚=eval(form.dif.value)
また、計算結果を渡すときは、さっきの逆で、「formの名前.入力フォームの名前.value」でOKです。
form.bell.value=(ベル確率)
3.3. 作ったコード
ここまでHTMLとJavaScriptで作ったコードをまとめると、こうなります。
<div>HTMLでツールの説明とかを記載<div> <script type="text/javascript"> function bellcalc() { ゲーム数=eval(form.play.value) BB回数=eval(form.bb.value) 差枚=eval(form.dif.value) BB枚数 = 243 ベル枚数 = 10 IN = ゲーム数 * 3 OUT = BB枚数 * BB回数 ベル確率 = ベル枚数 * ゲーム数 / (差枚 + IN - OUT) form.bell.value=(ベル確率) } </script> <form name="form"> <label>ゲーム数:<input type="number" name="play"></label> <br> <label>BB回数:<input type="number" name="bb"></label> <br> <label>差枚数:<input type="number" name="dif"></label> <br> <input type="button" value="ベル確率逆算" onclick="bellcalc()"> <br> <label>ベル確率:<input type="text" name="bell" readonly=""></label> </form> <div>解説記事を記載<div>
4. まとめ
解説を書いて思いましたが、改めて考えると何で今までWEBアプリ作れなかったの?ってくらい簡単ですね。
(検索スキルと頭脳の問題なのかな。。)
そういえば説明し忘れた気がしますが、ベル確率の逆算にあたって、チェリー確率やスイカ確率は適当な値を入れてます。
なので絶対値は結構信頼度無いと思います。
(正確なチェリー確率やスイカ確率がわからないし、そもそも確率も重いから確率通り引けてることも少ないので。)
そうすると、使うとしたら、「複数の候補台と比べる」とか「過去データと比べる」とかって感じですかね。
(それでもあくまで参考値くらいですが。)
コメント
コメントを投稿