凡例などをつけて、ついにFREE個数別に色付けされた度数分布のグラフが完成した。
分割幅は左から払い戻し率0~50%未満、50~100%未満、…と続き2950~3000%未満、そして最も右の列は3000%以上をまとめている。その理由は、もはや30倍超えといえばほぼほぼ7個ラインのオッズアップ1個がほとんどであり、それ以外の配当は起こりにくいからである。実際、オッズアップ2個で75倍などはまずないし、50倍と4個ライン1個などもこれまた起こりづらい。
悲しいことにグラフがぎざぎざしすぎているが、これもやはり最大値にあわせたグラフにしようか悩んでいる。ただ、実際のアニマロッタでここまで払い戻し率がぶれることはほぼないので無視するか…。現在の設定ではFREE配置可能個数を1~4個が等確率で出現するようにしているため、グラフがかなり大きく揺れ動いている。実際はFREE1個が大半で、ときどきFREE2個、まれにFREE3個、ごくまれにFREE4個なので、特に問題ないはず。
右上を見ると、各FREE個数別の配当分布が分かる。(ほかのグラフで見づらいが)
面白い点は、FREE4個配置でも配当が0~100%というのが存在している点である。
これは、7個ラインの倍率とそのオッズアップ確率がFREEの個数が多いがゆえに高いため、7個ラインの確率がそこまで高くなくても期待値的にそれを狙いにいく、ということが関係している。最適解が7個ラインを成立させにいくため、それが失敗すればもはや払い戻しは皆無に等しい。ただ、もともとのFREEの多さから、まぐれで4個ラインあたりが当選することがあり、それが100%階級あたりの赤色になっている、ということである。
また7個ライン成立確率は、それが成立したときFREE4個である可能性が圧倒的に高い。
ただこれはFREE1~4個を等確率で出しているからその傾向が言えるのであって、これが等確率でないとこの考察は使えないことに注意。例えばFREE3個が10000回で、FREE4個が1回だと、7個ラインの成立確率はFREE3個が圧倒的多数を占めるだろう。だからといってグラフの度数分布から4個での7個ライン成立が少ない、というのは間違いであることが分かるだろう。
では、実際のアニマロッタらしく、FREE1個が80%、FREE2個が15%、FREE3個が4%、FREE4個が1%であったと仮定する。もちろん実際にこの確率ではないが、そうすれば中央のグラフが落ち着いたり実践データに近くなるので。
なんかうまい具合にPO率がちょうど100%くらいになった。
右上のグラフは、黄色と赤の発生確率が足して5%なのでほとんど表示されていない…がこれは仕様なのでしようがない(寒)
念のためにわかりやすい最上段右列の期待値を一応計算してみる。
この配置では、24番と23番に入って配当が3→6倍となる確率が(2/19)*(1/18)=1/171である。よって170/171の確率で300%、1/171の確率で600%より、その期待値は(51000+600)/171=51600/171=301.7…となり、切り捨てなので301%となり確かに期待値の計算は正しく行われている。なお、3,6倍以外の配当は取りえない。
さて次は何をするか…。
面をクリックしてその詳細情報を下のほうに示そうかと考えている。
具体的な案としては、面をクリックするとその面の拡大図が表示されて、番号(マス)にカーソルを合わせると配当分布が表示されたり、7個ラインの成立の確率やその他のラインの成立確率などを表示するシステムである。
後は残り1~3球の抽選で最大、最小のWINを与える組などの表示など。
ただまだどうするかは決定していない。
ブログ内検索
2020年7月10日金曜日
FREE別配当分布表示(1)
今度は面別の払い戻し率がどうなのかを、なんとなく右上に作成することにする。
これはFREE別に色分けしようと考えている。FREE1個を青、FREE2個を緑にしてそれらを足し合わせた度数分布的なものを作りたい。
形としては、正規分布になることはないが、まあそれになんとなく近そうな形になっていくことを期待している。
これはFREEの個数別の期待度を図る目的で作る。昨日作ったグラフは、各期待値にFREEの個数がラベル付けされていないので、FREE個数別でどれくらいの配当があるかを判断できないという難点がある。そこで色分けしたFREE個数別の度数分布を作ろう、というわけである。これにより、FREE2個がこの期待値付近でこういう具合に分散している、などを視覚的に把握することができる。
さて、それを実装するにはどうすればよいかだが、まず度数分布を示す棒は、とりあえずウディタの線を引くことのできる<LINE>コマンドをやはり使用する。刻み幅はいうまでもなく0.5倍(50%)ごとである。0.5*n(nは0以上)の配当意外になることは決してないからである。逆に0.5nとなるnが存在しないことはもちろんある。例えばn=3など。
とりあえず、度数分布の横軸として0~50%未満、50~100%未満、という具合にしようと思っている。ただこれだとこの最初の2つの階級がずいぶん突出するという問題を排除できないような気がする…。
そういうわけで、縦軸を可変にする必要が出てくる。
もし0~50%未満が100回起これば、その100回分の棒が画面から出ないようにしたい。
そうするとその他の棒も伸び縮みすることになる。
それらを形にしたものが以下。
確かに各階級で最も大きな棒がある一定の位置まで伸びるようにして、それ以外の棒の伸び具合が変わる。何気にこの機能の実装は初めてである。
青はFREE1個の期待値で、緑はFREE2個の期待値を表す。
分かりやすいように凡例と注意事項を右の空きスペースに記述する。
これはFREE別に色分けしようと考えている。FREE1個を青、FREE2個を緑にしてそれらを足し合わせた度数分布的なものを作りたい。
形としては、正規分布になることはないが、まあそれになんとなく近そうな形になっていくことを期待している。
これはFREEの個数別の期待度を図る目的で作る。昨日作ったグラフは、各期待値にFREEの個数がラベル付けされていないので、FREE個数別でどれくらいの配当があるかを判断できないという難点がある。そこで色分けしたFREE個数別の度数分布を作ろう、というわけである。これにより、FREE2個がこの期待値付近でこういう具合に分散している、などを視覚的に把握することができる。
さて、それを実装するにはどうすればよいかだが、まず度数分布を示す棒は、とりあえずウディタの線を引くことのできる<LINE>コマンドをやはり使用する。刻み幅はいうまでもなく0.5倍(50%)ごとである。0.5*n(nは0以上)の配当意外になることは決してないからである。逆に0.5nとなるnが存在しないことはもちろんある。例えばn=3など。
とりあえず、度数分布の横軸として0~50%未満、50~100%未満、という具合にしようと思っている。ただこれだとこの最初の2つの階級がずいぶん突出するという問題を排除できないような気がする…。
そういうわけで、縦軸を可変にする必要が出てくる。
もし0~50%未満が100回起これば、その100回分の棒が画面から出ないようにしたい。
そうするとその他の棒も伸び縮みすることになる。
それらを形にしたものが以下。
確かに各階級で最も大きな棒がある一定の位置まで伸びるようにして、それ以外の棒の伸び具合が変わる。何気にこの機能の実装は初めてである。
青はFREE1個の期待値で、緑はFREE2個の期待値を表す。
分かりやすいように凡例と注意事項を右の空きスペースに記述する。
2020年7月9日木曜日
予測・実測PO率グラフ表示
ゲーム数を重ねていき、そのゲームごとの払い戻し率をグラフにする。
具体的には、5,6,7球終了後の期待される払い戻し率と、実際の8球終了後の払い戻し率の推移を見ていこうと、いうわけである。グラフの描画方法などは以前と同じなので特筆すべき点は特にない。
上のグラフから見て取れることは、やはりゲーム終了後の払い戻し率の平均を推定すると、そこまで違いがないということである。
これはつまり、5球終了時点での払い戻し率平均に信頼を持ちやすい、ということである。
その理由の一つに8面の平均をとっている、ということが挙げられ、この時点で1回のゲーム試行は8面のビンゴバルーンの試行の平均をとったものと同等になるため、その分ばらつきが少なくなる、ということがある。
もし100面ビンゴバルーンなどが発生すれば、ある1ゲームでの予想払い戻し率は、相当実際の払い戻し率に近くなるだろう。
なお、この8面のうちひとつでも7個ラインが発生すれば25倍となるので、8面の平均をとれば300%の払い戻し率を確実に超える。
500%を超えているのは、ほぼほぼ7個ラインが2面で成立あるいは7個ラインのオッズアップ(後者のほうが確率が高いと思われる)が発生したものと予想される。
また、上記のグラフは常時FREEを2個配置可能なもとでの試行を行っており、8面でこれを行えばほぼ確実に等倍以上の返りが期待できその半数程度?が2倍以上というものである。
これからわかる通り、ビンゴバルーンにおいてFREEが2個配置可能であれば、平均してBETより多くのWINを得られることが多い、ということになる。その確率がどれくらいかは、また53130個のデータを集めて100%以上のものを53130で割ればよい。
実際に過去のデータ総整理で、FREE2個配置ではたしかPO率が170%程度だったような気がする。
ただ、グラフだけを見ても実際のPOがどれくらいかを数値で判定しづらいので、凡例の右当たりの最近のPO率の平均を各グラフ別に記述しようと思っている。
以前にも述べた通り、凡例の上から順に数字が小さくなっていけば、それは何らかのメダルを増やさせまいとする操作が発生しているということになり、逆もまたしかり。
せっかくなので、FREE1個、FREE2個(率掲載)、3個、4個の場合のグラフものせておく。
具体的には、5,6,7球終了後の期待される払い戻し率と、実際の8球終了後の払い戻し率の推移を見ていこうと、いうわけである。グラフの描画方法などは以前と同じなので特筆すべき点は特にない。
上のグラフから見て取れることは、やはりゲーム終了後の払い戻し率の平均を推定すると、そこまで違いがないということである。
これはつまり、5球終了時点での払い戻し率平均に信頼を持ちやすい、ということである。
その理由の一つに8面の平均をとっている、ということが挙げられ、この時点で1回のゲーム試行は8面のビンゴバルーンの試行の平均をとったものと同等になるため、その分ばらつきが少なくなる、ということがある。
もし100面ビンゴバルーンなどが発生すれば、ある1ゲームでの予想払い戻し率は、相当実際の払い戻し率に近くなるだろう。
なお、この8面のうちひとつでも7個ラインが発生すれば25倍となるので、8面の平均をとれば300%の払い戻し率を確実に超える。
500%を超えているのは、ほぼほぼ7個ラインが2面で成立あるいは7個ラインのオッズアップ(後者のほうが確率が高いと思われる)が発生したものと予想される。
また、上記のグラフは常時FREEを2個配置可能なもとでの試行を行っており、8面でこれを行えばほぼ確実に等倍以上の返りが期待できその半数程度?が2倍以上というものである。
これからわかる通り、ビンゴバルーンにおいてFREEが2個配置可能であれば、平均してBETより多くのWINを得られることが多い、ということになる。その確率がどれくらいかは、また53130個のデータを集めて100%以上のものを53130で割ればよい。
実際に過去のデータ総整理で、FREE2個配置ではたしかPO率が170%程度だったような気がする。
ただ、グラフだけを見ても実際のPOがどれくらいかを数値で判定しづらいので、凡例の右当たりの最近のPO率の平均を各グラフ別に記述しようと思っている。
以前にも述べた通り、凡例の上から順に数字が小さくなっていけば、それは何らかのメダルを増やさせまいとする操作が発生しているということになり、逆もまたしかり。
せっかくなので、FREE1個、FREE2個(率掲載)、3個、4個の場合のグラフものせておく。
2020年7月8日水曜日
予想PO率表示(3)
配当の期待値が、6~7球入賞後も表示されるように。8球後はそもそも期待値を掲載する意味がないので「---」で表示する。あと、以前のべた通り、すでに入っている番号は入賞済、という表記にしておいた。
上の画像は、6球終了時点での期待値をそれぞれの枠の右下に示している。
ここで注意すべきは、この黄色のバルーンの配置はあくまで5球後の最適と判断された位置であり、6球後に改めて最適の判断をしているわけではない。6球後にFREEを置けないという本家の仕様上、考える意味がないからである。
上の画像では右下あたりの盤面は4個ラインのリーチ待ちであるが、これが残り2球ともなるとずいぶん期待値が低い。
1~25の番号別期待値を見てもわかる通り、13,14に入ればかろうじて期待値が50%程度になるか、という程度である。なおまだ入賞番号は固定しているので7球目は7番に入賞するわけだが、この場合配当期待値はわずか21%である。
上記から見てわかる通り、FREE1個での配置ではもはやBET以上のWINは絶望的であることが分かる。
参考程度に、FREEを2個、3個、4個とした場合の6球終了時の配当期待値をのせる。
FREE2個ともなると安定して等倍以上のWINが返ってくることが多い。
FREE3個になるとBET×3倍程度も返ってくるようになったりする。
たしかアニマでは3倍か5倍かは知らないが、総額BETの何倍のWINを得るかでリザルト画面での効果音(無音、ピュリッ、テンジンジャーン)に変化が起こる。
FREE4個の場合、さらに配当の期待値は上昇し、例えばビンゴバルーン100BET×8面ならば総計800BETで、各番号の期待値は総額BETに対する倍率の期待値を示しているので、およそ5000~6000WINが期待できることになる。なお7と21番がよりよい配当を得られるとされているのは、7個ラインビンゴ成立によるもの。ただし、8面で平均を取られるのでそこまでずばぬけてこの2つの番号の期待値が高くなるわけではない。
さてそろそろ明日以降は、5,6,7球終了時の予想PO率の推移をグラフに表し、さらにゲーム終了時の配当率もグラフにしてみようと思っている。
もちろん5,6,7球と進むにつれて不確定性が下がってくるので、実際の配当率推移のグラフからずれにくくなっていくことが予想される。
どちらかというとこれの本領は実践モードである。もしこの予想PO率のグラフと、実際の払い戻し率のグラフがやたら離れていれば、それは操作疑惑濃厚である。
上の画像は、6球終了時点での期待値をそれぞれの枠の右下に示している。
ここで注意すべきは、この黄色のバルーンの配置はあくまで5球後の最適と判断された位置であり、6球後に改めて最適の判断をしているわけではない。6球後にFREEを置けないという本家の仕様上、考える意味がないからである。
上の画像では右下あたりの盤面は4個ラインのリーチ待ちであるが、これが残り2球ともなるとずいぶん期待値が低い。
1~25の番号別期待値を見てもわかる通り、13,14に入ればかろうじて期待値が50%程度になるか、という程度である。なおまだ入賞番号は固定しているので7球目は7番に入賞するわけだが、この場合配当期待値はわずか21%である。
上記から見てわかる通り、FREE1個での配置ではもはやBET以上のWINは絶望的であることが分かる。
参考程度に、FREEを2個、3個、4個とした場合の6球終了時の配当期待値をのせる。
FREE2個ともなると安定して等倍以上のWINが返ってくることが多い。
FREE3個になるとBET×3倍程度も返ってくるようになったりする。
たしかアニマでは3倍か5倍かは知らないが、総額BETの何倍のWINを得るかでリザルト画面での効果音(無音、ピュリッ、テンジンジャーン)に変化が起こる。
FREE4個の場合、さらに配当の期待値は上昇し、例えばビンゴバルーン100BET×8面ならば総計800BETで、各番号の期待値は総額BETに対する倍率の期待値を示しているので、およそ5000~6000WINが期待できることになる。なお7と21番がよりよい配当を得られるとされているのは、7個ラインビンゴ成立によるもの。ただし、8面で平均を取られるのでそこまでずばぬけてこの2つの番号の期待値が高くなるわけではない。
さてそろそろ明日以降は、5,6,7球終了時の予想PO率の推移をグラフに表し、さらにゲーム終了時の配当率もグラフにしてみようと思っている。
もちろん5,6,7球と進むにつれて不確定性が下がってくるので、実際の配当率推移のグラフからずれにくくなっていくことが予想される。
どちらかというとこれの本領は実践モードである。もしこの予想PO率のグラフと、実際の払い戻し率のグラフがやたら離れていれば、それは操作疑惑濃厚である。
予想PO率表示(2)
番号モードのときのみ、各番号に入った場合の期待値を算出した。
例えば9番に入った場合は、今後の8面全体の払い戻し率として5.8倍程度が期待される、ということである。つまり、番号の右にある%の数字が高いほど、熱いナンバーである。
まだプログラムは組んでいないが、現時点で8や11は数値が小さいが、これらが入った後はそれぞれ11、8の数字が2段目2列目で7個ラインを形成するため、それらの番号の%の値が急上昇するはず。
なお1~5が0%なのは、すでに最初の5球でINしているため、期待値の総和の対象に入っていないということである。ただちょっと0%だと意味合い的によろしくないので、「入賞済」などにして対応予定である。
せっかくなのでアニマップにおける星獲得期待値も算出してみようと思ったので、それを実装。
%の上に小さく表示されているのが、星の獲得指数である。平均的な星の1面あたりの獲得率は通常、かなり低いので、平均星獲得個数に1000をかけたものとしている。
例えば×1と表示されていれば、それは星獲得平均個数は1/1000なので、平均的に1000回その盤面が出てようやく1個程度の獲得ということである。
左下はビンゴバルーン7個ラインによる星7個と、30倍以上の星3個が平均的であるというある意味直感と似た結果を出している。もちろん25倍で終わって星9個の場合もあるし、50倍を超えて星12個の場合もある。
明日からは、いよいよこの後の3球を実際に抽選させたり、ゲームを複数回行いその履歴をグラフにして表示したりすることを考えている。
例えば9番に入った場合は、今後の8面全体の払い戻し率として5.8倍程度が期待される、ということである。つまり、番号の右にある%の数字が高いほど、熱いナンバーである。
まだプログラムは組んでいないが、現時点で8や11は数値が小さいが、これらが入った後はそれぞれ11、8の数字が2段目2列目で7個ラインを形成するため、それらの番号の%の値が急上昇するはず。
なお1~5が0%なのは、すでに最初の5球でINしているため、期待値の総和の対象に入っていないということである。ただちょっと0%だと意味合い的によろしくないので、「入賞済」などにして対応予定である。
せっかくなのでアニマップにおける星獲得期待値も算出してみようと思ったので、それを実装。
%の上に小さく表示されているのが、星の獲得指数である。平均的な星の1面あたりの獲得率は通常、かなり低いので、平均星獲得個数に1000をかけたものとしている。
例えば×1と表示されていれば、それは星獲得平均個数は1/1000なので、平均的に1000回その盤面が出てようやく1個程度の獲得ということである。
左下はビンゴバルーン7個ラインによる星7個と、30倍以上の星3個が平均的であるというある意味直感と似た結果を出している。もちろん25倍で終わって星9個の場合もあるし、50倍を超えて星12個の場合もある。
明日からは、いよいよこの後の3球を実際に抽選させたり、ゲームを複数回行いその履歴をグラフにして表示したりすることを考えている。
2020年7月7日火曜日
予想PO率表示(1)
最適解のもとでの精密な期待値を、ウディタのほうでも計算させて表示させた。
…と1行だけ書いているが、実はこれが意外に時間がかかったりする。
各盤面に右下に色付きで書かれている数字は、もちろん平均払い戻し率(以後PO率と呼ぶ)であり、100%=1倍というわけで、この値が100%を超えれば等倍以上の配当が期待される。
とはいえ、例えば0倍が99%、100倍が1%であってもこの期待値は1倍、つまり100%であるので、値はあくまで目安である。長いこと同じ盤面で試行を繰りかえせば、その期待値に近づくが。
実際にうまくいっていることを念のため確認すると、左上の盤面はすでに3個ライン3が成立しており、これは2.5倍である。しかし平均払い戻し率が7.7倍であるのは、3個ラインがほかにも成立しやすいからである。その右の盤面は普通に5個ラインのオッズアップで400%以上は確定。そこに新規の4個ラインでの6倍、オッズアップ+1での6倍などの確率が上乗せされて553%となっている。
そしてやはり、FREEの個数が少ないと一気に期待値が下がってしまうということもこの8面を見るだけでも何となくわかる。
ビンゴバルーンで+FREEが最初に1個しか出なかった場合の期待値は40%少しつすでに判明しているので、8面全部+FREEが1個とかだと相当げんなりする。
とりあえずこれ以外にも、各番号ごとの期待値も別に計算させてある。これを右側に貼り付けようと思っている。番号を入力しない実践モードでは、これは必要ないというか不可能なので、何か別の機能でもつけようかと思っている。理論上の+FREE獲得個数と実際の獲得個数の比較によって、入ってほしい番号へのアニマ特有の操作があるかどうかを見極める材料にもなったりして。
余談だが、なんかこういう階級別に色付けする視覚的効果を付与するのが大好きだったりする。そして求めづらい数字がぽんっとプログラムの後で出たときの安堵と快感。
これはあのいわゆる極限を求める問題で答えが0や1、無限大以外に収束した場合の感覚と似ている(変態)
…と1行だけ書いているが、実はこれが意外に時間がかかったりする。
各盤面に右下に色付きで書かれている数字は、もちろん平均払い戻し率(以後PO率と呼ぶ)であり、100%=1倍というわけで、この値が100%を超えれば等倍以上の配当が期待される。
とはいえ、例えば0倍が99%、100倍が1%であってもこの期待値は1倍、つまり100%であるので、値はあくまで目安である。長いこと同じ盤面で試行を繰りかえせば、その期待値に近づくが。
実際にうまくいっていることを念のため確認すると、左上の盤面はすでに3個ライン3が成立しており、これは2.5倍である。しかし平均払い戻し率が7.7倍であるのは、3個ラインがほかにも成立しやすいからである。その右の盤面は普通に5個ラインのオッズアップで400%以上は確定。そこに新規の4個ラインでの6倍、オッズアップ+1での6倍などの確率が上乗せされて553%となっている。
そしてやはり、FREEの個数が少ないと一気に期待値が下がってしまうということもこの8面を見るだけでも何となくわかる。
ビンゴバルーンで+FREEが最初に1個しか出なかった場合の期待値は40%少しつすでに判明しているので、8面全部+FREEが1個とかだと相当げんなりする。
とりあえずこれ以外にも、各番号ごとの期待値も別に計算させてある。これを右側に貼り付けようと思っている。番号を入力しない実践モードでは、これは必要ないというか不可能なので、何か別の機能でもつけようかと思っている。理論上の+FREE獲得個数と実際の獲得個数の比較によって、入ってほしい番号へのアニマ特有の操作があるかどうかを見極める材料にもなったりして。
余談だが、なんかこういう階級別に色付けする視覚的効果を付与するのが大好きだったりする。そして求めづらい数字がぽんっとプログラムの後で出たときの安堵と快感。
これはあのいわゆる極限を求める問題で答えが0や1、無限大以外に収束した場合の感覚と似ている(変態)
2020年7月6日月曜日
HIT処理全般(2)
謎の不具合が発生したがその原因は組→ID変換においての第4項のシグマ内の、単純乗算との混同の勘違いによるものだった。何を言っているかわからないと思うので、これはおいておいて、とうとう最適解をしゅっと与えるプログラムが完成し、それを視覚化した。
赤色が入賞バルーンで、黄色が最適解(平均払い戻し率最大)を与えるバルーンの配置である。なお、上の段から順に配置可能FREE数は4,3,2,1とした。
おまかせオートなどとは違い、しっかりと7個ラインや、5個ライン×2、そしてオッズアップの配置、さらに7個ラインリーチまでも考慮されていることがわかる。
本来は最適解の後に払い戻し率のデータがあったが、よく考えればここから1140通りの残り3球を考えてオッズの平均をとればいいだけなうえ、そもそも最適解をすばやくみつけることが重要なので、この辺りは気にしなくても良い。
なお、オッズアップの位置はいわずもがな赤色バルーンのあるところならばどこでもよい。一応上のほうから順番に、赤色の部分をオッズアップとするようにしているが、上の画像では下のほうに虹色が発生しているのは、これはかつて行った最適解探知での同一配置を得るための回転や対称移動を行った名残である。例えば右の列の上から3段目は、時計回りに半回転すると、組{1,6,13,15,23}に相当して、このとき若い番号1にオッズアップを割り振る。それをもどして(半回転させて)1が25の位置になっているので、下のほうに虹色が来ているわけである。
このようなことをする理由は、以前も相当これに悩まされたが、処理速度の問題である。
この1パターンを探知するのに、FREE4個ともなると相当な時間がかかり、CPUをフルにして何週間かかけることでようやく全パターンを得られるわけだが、それでも回転や対称移動での同一配置をかなり使っての結果である。
だがこれは逆に言えば、それだけ普通ではやりづらい試行であり、その分このデータの価値は高まる。事実、ビンゴバルーンの最適解について論じている人はこちらの知る限りいなかったのでそれだけ難しい(時間がかかる)ということだろう。
ここからは、各番号により配当期待値を出していってそれを色分けしたり、その後のランダム抽選での配当の偏りのグラフなどの作成も考えており、右側の余白に何を作るか楽しみである。
おまけ:ID→組への変換のプログラムの一部
演出がほぼ不要なのでスナック感覚でツールを作れるが、このあたりはノートにいろいろ書いて考えた。
赤色が入賞バルーンで、黄色が最適解(平均払い戻し率最大)を与えるバルーンの配置である。なお、上の段から順に配置可能FREE数は4,3,2,1とした。
おまかせオートなどとは違い、しっかりと7個ラインや、5個ライン×2、そしてオッズアップの配置、さらに7個ラインリーチまでも考慮されていることがわかる。
本来は最適解の後に払い戻し率のデータがあったが、よく考えればここから1140通りの残り3球を考えてオッズの平均をとればいいだけなうえ、そもそも最適解をすばやくみつけることが重要なので、この辺りは気にしなくても良い。
なお、オッズアップの位置はいわずもがな赤色バルーンのあるところならばどこでもよい。一応上のほうから順番に、赤色の部分をオッズアップとするようにしているが、上の画像では下のほうに虹色が発生しているのは、これはかつて行った最適解探知での同一配置を得るための回転や対称移動を行った名残である。例えば右の列の上から3段目は、時計回りに半回転すると、組{1,6,13,15,23}に相当して、このとき若い番号1にオッズアップを割り振る。それをもどして(半回転させて)1が25の位置になっているので、下のほうに虹色が来ているわけである。
このようなことをする理由は、以前も相当これに悩まされたが、処理速度の問題である。
この1パターンを探知するのに、FREE4個ともなると相当な時間がかかり、CPUをフルにして何週間かかけることでようやく全パターンを得られるわけだが、それでも回転や対称移動での同一配置をかなり使っての結果である。
だがこれは逆に言えば、それだけ普通ではやりづらい試行であり、その分このデータの価値は高まる。事実、ビンゴバルーンの最適解について論じている人はこちらの知る限りいなかったのでそれだけ難しい(時間がかかる)ということだろう。
ここからは、各番号により配当期待値を出していってそれを色分けしたり、その後のランダム抽選での配当の偏りのグラフなどの作成も考えており、右側の余白に何を作るか楽しみである。
おまけ:ID→組への変換のプログラムの一部
演出がほぼ不要なのでスナック感覚でツールを作れるが、このあたりはノートにいろいろ書いて考えた。
ID→組への変換
さすがに頭の中で構築するにはあまりに難しいので、実際にID3000から組を導出する手順を考えた。
まず、組{1,2,3,4}…{1,2,3,25}までは、22組存在する。
つづいて、{1,2,4,5}…{1,2,4,25}までは21組。以下同様にして{1,2,24,25}までの組は
22+21+20+19+…+1となり、あのよくある等差数列で253個存在。
この後2つ目の番号を3に変えて{1,3,※,※}の形が何個あるかを調べると、これは21+20+19+18+…+1個存在する。
つまり、最初の番号がkであるものは、1を23-k個、2を22-k個、3を21-k個…と足し合わせたものになりこれは全部で(23-k)(24-k)(25-k)/6個存在することになる。ちなみにこれはk+1~25の数字を3つ並べる組み合わせで、25-kC3の値と一致する。
この25-kC3の値をk=1,2,3,4…と足しわせていくと、IDより大きな値になることがある。
例えばID3000の場合、k=1では2024。k=2まで足しわせると2024+1741=3765となり、超過。
つまり、k=2のところでこのID3000が存在していることになる。kの定め方より、ここでついに最初の番号が2と決まる。
この後、2番目の番号を探るために、とりあえず最初の番号が2のものの組み合わせのうち、何番目かを探る。そのためには3000から2024を引く。判定には3765を使用していたので、いましがたたした1741を再び引けばきれいにひとつまえの2024の値が残る。プログラムでも実際に[全体和]-[新規総和]みたいな感じでこれを行っている。
{2,※,※,※}の組で3000-2024=976番目であることがわかる。
この後、{2,3,4,5}…{2,3,4,25}は21個、…と再び同様のことをしていく。
ただし、この21個という値は、最初の番号が2だから21になるのであって、最初の番号がkの場合は23-k個になる。
21+20+19+18+…1は231であり、次の{2,4,※,※}は20+19+…1で210、{2,5,※,※}は190、{2,6,※,※}は171、{2,7,※,※}は153となる。これで和が955となる。
そして{2,8,※,※}は136通りあるので、2番目の数字は8と決まる。
そして3番目の数を同定するため、976から955を引く。すると値は21である。
{2,8,9,※}は16通り存在する。よって17番目は{2,8,10,11}である。
求めたいのは21番目なので、{2,8,10,15}となる。
以上より、ID3000は組{2,8,10,15}となる。実際にプログラムに3000を代入してもこうなることを確認。念のためにID1とID12650でそれぞれ組{1,2,3,4}と{22,23,24,25}が返されることを確認した。
なので組→IDよりID→組のほうが、少々プログラムは面倒になる。
…が、意外とウディタでも70行足らずでいけることが判明。
しかしこれ、4つの場合にしか適用されないので、これとまったく同様の手法を3つ、2つでも作っていくことになる。1つはIDがもはや組そのものなので操作は不要。
まず、組{1,2,3,4}…{1,2,3,25}までは、22組存在する。
つづいて、{1,2,4,5}…{1,2,4,25}までは21組。以下同様にして{1,2,24,25}までの組は
22+21+20+19+…+1となり、あのよくある等差数列で253個存在。
この後2つ目の番号を3に変えて{1,3,※,※}の形が何個あるかを調べると、これは21+20+19+18+…+1個存在する。
つまり、最初の番号がkであるものは、1を23-k個、2を22-k個、3を21-k個…と足し合わせたものになりこれは全部で(23-k)(24-k)(25-k)/6個存在することになる。ちなみにこれはk+1~25の数字を3つ並べる組み合わせで、25-kC3の値と一致する。
この25-kC3の値をk=1,2,3,4…と足しわせていくと、IDより大きな値になることがある。
例えばID3000の場合、k=1では2024。k=2まで足しわせると2024+1741=3765となり、超過。
つまり、k=2のところでこのID3000が存在していることになる。kの定め方より、ここでついに最初の番号が2と決まる。
この後、2番目の番号を探るために、とりあえず最初の番号が2のものの組み合わせのうち、何番目かを探る。そのためには3000から2024を引く。判定には3765を使用していたので、いましがたたした1741を再び引けばきれいにひとつまえの2024の値が残る。プログラムでも実際に[全体和]-[新規総和]みたいな感じでこれを行っている。
{2,※,※,※}の組で3000-2024=976番目であることがわかる。
この後、{2,3,4,5}…{2,3,4,25}は21個、…と再び同様のことをしていく。
ただし、この21個という値は、最初の番号が2だから21になるのであって、最初の番号がkの場合は23-k個になる。
21+20+19+18+…1は231であり、次の{2,4,※,※}は20+19+…1で210、{2,5,※,※}は190、{2,6,※,※}は171、{2,7,※,※}は153となる。これで和が955となる。
そして{2,8,※,※}は136通りあるので、2番目の数字は8と決まる。
そして3番目の数を同定するため、976から955を引く。すると値は21である。
{2,8,9,※}は16通り存在する。よって17番目は{2,8,10,11}である。
求めたいのは21番目なので、{2,8,10,15}となる。
以上より、ID3000は組{2,8,10,15}となる。実際にプログラムに3000を代入してもこうなることを確認。念のためにID1とID12650でそれぞれ組{1,2,3,4}と{22,23,24,25}が返されることを確認した。
なので組→IDよりID→組のほうが、少々プログラムは面倒になる。
…が、意外とウディタでも70行足らずでいけることが判明。
しかしこれ、4つの場合にしか適用されないので、これとまったく同様の手法を3つ、2つでも作っていくことになる。1つはIDがもはや組そのものなので操作は不要。
ウディタでのIDと組の相互変換
ここでやりたいことは、組{1,2,3,4,5}をID1として、組{21,22,23,24,25}をID53130とするような辞書式組み合わせ(重複なし)を考えるが、この組→IDとID→組の変換をウディタでやりたい、という話である。
過去の記事を見ると、組→IDは記号C(コンビネーション)とsumで表せる。
もちろんウディタにこの機能はないのでループを使って処理することにする。
シグマでよく使ういわゆる「k」的なものを変数として使って、これを利用して和をどんどんとっていく作戦である。難しそうに見えて実は難しくない。
以下はそれをウディタ用にアレンジしたもの。
3番目のIDが小さいことから、おそらくあってそうな雰囲気。
確かめるためには強制的に1,2,3,4,5マス目HITになるように数字シャッフルをしなければよいが、あとで分かるのでここはチェックはしないでおく。
以下はID
30769 -->[コモン10/78行]
2764 -->[コモン10/78行]
1803 -->[コモン10/78行]
24768 -->[コモン10/78行]
29065 -->[コモン10/78行]
35402 -->[コモン10/78行]
30604 -->[コモン10/78行]
5776 -->[コモン10/78行]
2764 -->[コモン10/78行]
1803 -->[コモン10/78行]
24768 -->[コモン10/78行]
29065 -->[コモン10/78行]
35402 -->[コモン10/78行]
30604 -->[コモン10/78行]
5776 -->[コモン10/78行]
昨日、可変DBに最適なマスの位置をウディタに入力したので、あとはこのIDから可変にあらかじめ格納された最適解を示すID(1~1140)を呼び出し、それを5つの組に直せばあとは黄色バルーンを視覚的に配置するだけである。
なお、この可変DBへの入力、ウディタでは10000個しか最大でうつせないため、CSVファイルをぶつぎりにする必要があった。この作業も意外にいろいろと問題があって時間がかかった。
可変DBの値の呼び出しについてだが、例えばID12345の場合、
可変2のID2344番目にその最適解が眠っている。この2と2344の値は普通に10000での商にプラス1したものと、12345を10000でのあまりにマイナス1したものなので、ここの変換は一瞬。
次の記事ではいよいよ黄色バルーンを最適解として配置するところまでいく。
2020年7月5日日曜日
HIT処理全般(1)
とりあえず番号1,2,3,4,5,6,7,8に入った場合に赤色バルーンっぽくなるようにした。
加えて過去の自作アニマロッタからのビンゴの定義データを適用。これにより素早く倍率計算まで持っていくことができる。
ちなみにフリーを置いていないと上の状況では配当は0WINである。どこかで計算したと思うがFREE0個の場合のPO率はかなり低い。
なお、この赤色のバルーンは実際に領域を定義して、その領域内をクリックすれば赤色マスを置けるようにし、もう一度クリックすればそれを取り消せるようにゆくゆくはする予定である。
黄色バルーンについては、これは最適解を与えるためのものなので、機械側であらかじめ取得したデータから探って自動で黄色を配置する。
オッズの期待値の計算を行うのは、赤色バルーンが5個置かれたものから適宜、ということにする。ただ、この5つの番号の組み合わせをCSVファイルのIDに合うように5変数→1変数の変換が必要である。
例えばマスの組{1,2,3,4,5}からば1番目、{21,22,23,24,25}ならば辞書式で53130番目。
あとCSVをウディタの可変に入力していくが、悲しいことにウディタはデータを一つのDBで10000しか保有できない。
我の用意したデータは53130*2個のデータが各FREEに対して存在するので、
結局214520*2個のデータを可変に代入する操作が必要になる。
53130*2のデータを収容するのにDBが6個いるので、結局このデータは可変DBを24個ほど占有することになる。
しかしウディタは最初の10000個しか読めないため、以前作ったデータを10000個ずつこまぎれにするという作業まで発生。
これにより最適解データを可変側に導入するまで結構な時間がかかると思われる。
加えて過去の自作アニマロッタからのビンゴの定義データを適用。これにより素早く倍率計算まで持っていくことができる。
ちなみにフリーを置いていないと上の状況では配当は0WINである。どこかで計算したと思うがFREE0個の場合のPO率はかなり低い。
なお、この赤色のバルーンは実際に領域を定義して、その領域内をクリックすれば赤色マスを置けるようにし、もう一度クリックすればそれを取り消せるようにゆくゆくはする予定である。
黄色バルーンについては、これは最適解を与えるためのものなので、機械側であらかじめ取得したデータから探って自動で黄色を配置する。
オッズの期待値の計算を行うのは、赤色バルーンが5個置かれたものから適宜、ということにする。ただ、この5つの番号の組み合わせをCSVファイルのIDに合うように5変数→1変数の変換が必要である。
例えばマスの組{1,2,3,4,5}からば1番目、{21,22,23,24,25}ならば辞書式で53130番目。
あとCSVをウディタの可変に入力していくが、悲しいことにウディタはデータを一つのDBで10000しか保有できない。
我の用意したデータは53130*2個のデータが各FREEに対して存在するので、
結局214520*2個のデータを可変に代入する操作が必要になる。
53130*2のデータを収容するのにDBが6個いるので、結局このデータは可変DBを24個ほど占有することになる。
しかしウディタは最初の10000個しか読めないため、以前作ったデータを10000個ずつこまぎれにするという作業まで発生。
これにより最適解データを可変側に導入するまで結構な時間がかかると思われる。
ビンゴバルーンの復習
我の手元にあるデータは、CSVファイルであり、例えば1行目には595,5.095614などと書かれている。右側の数字は払い戻し倍率の平均であり、つまりは何度も試行を行うと5.1倍程度の払い戻し率に落ち着く、という意味である。左の595というのは配置を意味している。
実はこのデータはFREEを4個配置できるという場合であり、オッズアップのようにすでにバルーンが配置されているマスにも黄色のバルーンを配置できるので25C4通り存在する。
その場合の数を辞書式にソート(例えばID1は最初の組み合わせで、これは1,2,3,4の位置にバルーンを配置)した順番が左に記されている。
これの変換の方法はずいぶん前なので作成した式を忘れたが、まあすぐに復元できるので良い。
まずはピクチャを用意する。これは自分で作成したただの●でよい。
縦7マス、加えて8面のようにするため、縦は28マス分の●を生成する予定。
たしか画面サイズは720であったから、一つの●あたり25ピクセルで25*28=700であるのでこれがよい。
地道に座標して以下のようになる。
まだまだしょぼいが、そもそもこのツール?は演出を目的としていないのでこれくらいでよい。
ここからは、番号モードとマスモードを別々に作っていこうかと思っている。
番号モードは、おそらくあまり使わないが、入ったナンバー5つで自動で最適解を探索するというもの。もちろん200マスも入力などしていられないので、これは実際にランダムに番号を振ってイメージトレーニングの一環としてやっていこうと考えている。
こっちのモードでは、せっかくなので次の番号がどこに入れば払い戻し率の平均がどれくらいかも表示したいと思っている。場合の数は20C3で1140通りなので、これならすぐに処理が可能と思われる。実践でないし。それで期待値別に%を色付けして、どの番号に入るとどれくらいの払い戻し率かを視覚化する。わくわくしてたまらん(変態)
通常モードは、普通に5球終了時にすぐに最適解を表示するシステムを考えている。
ただしこの場合、番号別の期待値は計算できない(番号を定義していないため)ので、これ以降の更新は行わない。
ただ、実際のWINとの乖離などを調べる指標として、ゲーム終了後の払い戻し率(理論)と実際のWIN率の関係を示したものなどが準備できればこれも面白いだろう。
まずは番号モードを作って、番号別の期待値を計算するモードを作ろうと思う。
バルーンの列などの定義は、いわずもがな過去作成した自作アニマロッタのプログラムをこちらに転用予定である。
とりあえずピクチャだけ配置。
…がしかしまだまだ先は長い。
実はこのデータはFREEを4個配置できるという場合であり、オッズアップのようにすでにバルーンが配置されているマスにも黄色のバルーンを配置できるので25C4通り存在する。
その場合の数を辞書式にソート(例えばID1は最初の組み合わせで、これは1,2,3,4の位置にバルーンを配置)した順番が左に記されている。
これの変換の方法はずいぶん前なので作成した式を忘れたが、まあすぐに復元できるので良い。
まずはピクチャを用意する。これは自分で作成したただの●でよい。
縦7マス、加えて8面のようにするため、縦は28マス分の●を生成する予定。
たしか画面サイズは720であったから、一つの●あたり25ピクセルで25*28=700であるのでこれがよい。
地道に座標して以下のようになる。
まだまだしょぼいが、そもそもこのツール?は演出を目的としていないのでこれくらいでよい。
ここからは、番号モードとマスモードを別々に作っていこうかと思っている。
番号モードは、おそらくあまり使わないが、入ったナンバー5つで自動で最適解を探索するというもの。もちろん200マスも入力などしていられないので、これは実際にランダムに番号を振ってイメージトレーニングの一環としてやっていこうと考えている。
こっちのモードでは、せっかくなので次の番号がどこに入れば払い戻し率の平均がどれくらいかも表示したいと思っている。場合の数は20C3で1140通りなので、これならすぐに処理が可能と思われる。実践でないし。それで期待値別に%を色付けして、どの番号に入るとどれくらいの払い戻し率かを視覚化する。わくわくしてたまらん(変態)
通常モードは、普通に5球終了時にすぐに最適解を表示するシステムを考えている。
ただしこの場合、番号別の期待値は計算できない(番号を定義していないため)ので、これ以降の更新は行わない。
ただ、実際のWINとの乖離などを調べる指標として、ゲーム終了後の払い戻し率(理論)と実際のWIN率の関係を示したものなどが準備できればこれも面白いだろう。
まずは番号モードを作って、番号別の期待値を計算するモードを作ろうと思う。
バルーンの列などの定義は、いわずもがな過去作成した自作アニマロッタのプログラムをこちらに転用予定である。
とりあえずピクチャだけ配置。
…がしかしまだまだ先は長い。
再開の恐れあり
なんとか落ち着いてきたので、タイトル通り再開の恐れがある。
この期間中にアニマアンケートなどがあったらしいが、各コメントに200文字以上くらいの感想を書き込んで1万文字くらいになったかもしれない我のアンケートはなぜか向こうに送信できず残念であった。
あのアンケートから、アニマロッタ6ではおそらくフレンド機能でなんかいろいろ解放とかがあるのだろうと予想がついたので、現時点で自作アニマロッタをよいところまで持っていっても最新作の置換によってその威光?を失うと踏んだため、以後は実用的なものを作成しようと計画中である。
その中でもおそらく最も気になるのが、以前mathematicaで何十時間もかけて解析したビンゴバルーン最適解法である。この「最適」は、単にペイアウト率を最大にする、ということにしており、りんごの獲得や抽選の偏りは考慮していない。
そしてそのビンゴバルーンを8面で行った時、ユーザー側がセカンドロッタまで入ったマスを入力することで、最適な位置及び各面での払い戻し率を計算させようかと考えている。
この最適解を得るためには、当たり前だがすべて5球分入力し終えてから処理に入るととても間に合わないので、半年くらい前にPCにやらせまくった例のデータを用いる。
とはいえ、現時点では何もできていないので、以上のことは構想であることに注意。
今からその「ビンゴバルーン最適配置」をいつも通りウディタで作成していこうと考えている。これに関してはそこまで時間はかからないため、数日で出来上がるだろうとみている。
この期間中にアニマアンケートなどがあったらしいが、各コメントに200文字以上くらいの感想を書き込んで1万文字くらいになったかもしれない我のアンケートはなぜか向こうに送信できず残念であった。
あのアンケートから、アニマロッタ6ではおそらくフレンド機能でなんかいろいろ解放とかがあるのだろうと予想がついたので、現時点で自作アニマロッタをよいところまで持っていっても最新作の置換によってその威光?を失うと踏んだため、以後は実用的なものを作成しようと計画中である。
その中でもおそらく最も気になるのが、以前mathematicaで何十時間もかけて解析したビンゴバルーン最適解法である。この「最適」は、単にペイアウト率を最大にする、ということにしており、りんごの獲得や抽選の偏りは考慮していない。
そしてそのビンゴバルーンを8面で行った時、ユーザー側がセカンドロッタまで入ったマスを入力することで、最適な位置及び各面での払い戻し率を計算させようかと考えている。
この最適解を得るためには、当たり前だがすべて5球分入力し終えてから処理に入るととても間に合わないので、半年くらい前にPCにやらせまくった例のデータを用いる。
とはいえ、現時点では何もできていないので、以上のことは構想であることに注意。
今からその「ビンゴバルーン最適配置」をいつも通りウディタで作成していこうと考えている。これに関してはそこまで時間はかからないため、数日で出来上がるだろうとみている。
登録:
投稿 (Atom)