投稿

ラベル(Python)が付いた投稿を表示しています

スランプグラフ画像の歪を補正する方法

イメージ
お世話になっております、スログラミングです。 今回はひさしぶりにpythonでプログラミングしようと思ってます。 遊技機の大型化。個人的にはエヴァとか牙狼みたいに動作するなら許せる派ですが、私の好みの話はどうでも良いので一旦おいておくとして、そういう機種でスランプグラフを撮ろうとすると、 こうなりません? この状態だと、 スランプグラフから千円Sを計算 したりするときにちょっとめんどくさかったりします。 (そもそも目視でも見辛いですし。) そこで今回は、 斜めから撮影したスランプグラフを真っすぐに戻す方法 について説明したいと思います。 本日のアジェンダはこちら。 透視変換とは? 透視変換のプログラミング 今回作成したコード まとめ 1. 透視変換とは? 目次で答えが先バレしちゃってますが、斜めから撮影したスランプグラフを真っすぐに戻すには、 透視変換 を使います。 射影変換というのもあるらしいですが、違いはよくわかってません。 そこら辺の説明は頭の良い方にお任せするとして、斜めに撮った状態のまま千円Sを算出するとどうなってしまうかを考えてみましょう。 他にも方法はあるかもしれませんが、 基本的には1pixあたりの出玉数を計算することで、千円Sを算出 すると思います。 例えば、冒頭で貼り付けた画像の場合、グラフの左端は0~10000玉までのサイズが522pixなのに対して、右端は384pixとなっています。 この場合、1pixあたりの出玉数は、 ・左端:10000[玉] / 522[pix] = 19.16[玉/pix] ・右端:10000[玉] / 384[pix] = 26.04[玉/pix] となるので、 左端で求めた1pixあたりの出玉数を使って、右端の出玉数を算出したりするとおかしな値となってしまい ます。 (1pixあたり5玉ずつずれていく。) 左端の出玉数は左端で求めた1pixあたりの出玉数を使って、右端の出玉数は右端で求めた1pixあたりの出玉数を使う、とか...

AIでホール攻略

イメージ
お世話になっております、スログラミングです。 タイトルにもあるとおり、今回はAIに関するプログラムを作ろうと思っていますが、最近のAI技術ってすごいですよね。 例えば、Googleがドアホンを出してるって知ってますか? 「 Google Nest Doorbell 」っていうんですけど、「スマートウォッチ」とかならまだイメージが湧くと思いますが、「スマートドアベル」って何ができるの?って思いますよね。 ちょっと調べたところによると、インターホン鳴らされると映像が映るのは普通のドアホンと同じなんですが、 Google Nest Doorbellは映像と一緒に「誰が何のために来たのか?」っていう情報まで表示 してくれるらしいんですよ。 いやいや、すごっ! どうやら顔認識で人物を特定しつつ、その人の持ち物等を認識することで何のために来たのか?を理解してるらしいですね。 (例えば、「この人来たときは箱持ってたのに、帰るときは箱持ってなかった。」→「あ、もしかして配達員さん?」みたいな感じで。) こんな感じで知らない内に色んなところにAIが導入されてきているんですが、どうやらパチンコ業界も例外ではないらしく、最近は スロットの設定配分をAIが決めてくれるような機能があるらしい です。 とするならば、こちらもAIで対抗するしかない! 目には目を。復讐には復讐を。AIにはAIを。(アンフェア懐かしい。) ※素人が自分なりの理解で書いた記事&お試しレベルのコーディングなので、暖かい目で見て下さい。 ということで、本日のアジェンダはこちら。 1. LightGBMとは 2. LightGBMの使い方 3. Pythonでのコーディング 4. 今回作成したコード 5. 結果の確認 1. LightGBMとは 一口にAIといっても中身は色々あるようで、有名なのはディープラーニングですよね。 ディープラーニングといえば、↓図のような感じで、入力があって出力があって間にネットワークがたくさん張ってる感じのやつですね。 で、今回使うやつはディープラーニングとは違うやつです。 というのも、色々調べてたらKaggleっていうデータ分析のコンペ(賞金も出るらしい)があって、そこの上位者がよく使ってる手法があると! これはもう使ってみるしか...

Pフィーバー戦姫絶唱シンフォギア2 1/230VER.のオスイチボーダー

イメージ
お世話になっております、スログラミングです。 Pフィーバー戦姫絶唱シンフォギア2 1/230VER.ということで、シンフォ2に遊タイムがついて、確率が重くなったバージョンですね。 大当り後685回消化で突入ということで、遠からずも近からずといった感じですが、これが遊タイムを無視したときにどのくらいボーダーに効いてくるのかってところですね。 ということで、 遊タイムを無視(天井を無視)したボーダー情報=オスイチボーダー を算出してみました。 目次 0. オスイチボーダーとは 1. Pフィーバー戦姫絶唱シンフォギア2 1/230VER.のオスイチボーダー 2. 今回作成したコード 0. オスイチボーダーとは オスイチボーダーとは、 天井を無視(遊タイムを無視)した場合のボーダー 。 オスイチ:座って1回転目、または極めて少ない回転数で当たること ボーダー:理論上の損益分岐点 から勝手に作成した造語。 オスイチを繰り返した場合、特別な場合を除いては遊タイムの恩恵にあずかれないことから。 ちなみに、この遊び方をする人は試行回数が少ない(週1で仕事帰りに1万勝負とか)と思われるので、この数値に収束することは滅多にないと思います。 あくまで気休め程度で参考にしてください。 1. Pフィーバー戦姫絶唱シンフォギア2 1/230VER.のオスイチボーダー オスイチボーダーは20.6くらい です。 月マイナス1万くらいを目指すなら、 千円Sが15くらいの台を週1回1万勝負 って感じですね。 2. 今回作成したコード オスイチボーダー算出に使用したプログラムはこちら。 # coding: UTF-8 # 乱数作成用 import random # ボーダー算出用 import numpy as np # スランプグラフ描画用 import pylab # 試行条件の設定---ここから---- # 試行回数 loop = 1000000 # 千円Sの設定範囲 千円S_最小 = 10 千円S_最大 = 30 # 右打ち中の1回転当りの玉減り() 玉減り = 0.1 # ラウンド間の...

Pデビルマン疾風迅雷のオスイチボーダー

イメージ
お世話になっております、スログラミングです。 Pデビルマン疾風迅雷ということで、ニューギンからの源さんタイプですね。 個人的には、キュインパトモードが気になります。 (RUSHが連荘するとコスチュームが変化していくらしい!!) ということで、 遊タイムを無視(天井を無視)したボーダー情報=オスイチボーダー を算出してみました。 目次 0. オスイチボーダーとは 1. Pデビルマン疾風迅雷のオスイチボーダー 2. 今回作成したコード 0. オスイチボーダーとは オスイチボーダーとは、 天井を無視(遊タイムを無視)した場合のボーダー 。 オスイチ:座って1回転目、または極めて少ない回転数で当たること ボーダー:理論上の損益分岐点 から勝手に作成した造語。 オスイチを繰り返した場合、特別な場合を除いては遊タイムの恩恵にあずかれないことから。 ちなみに、この遊び方をする人は試行回数が少ない(週1で仕事帰りに1万勝負とか)と思われるので、この数値に収束することは滅多にないと思います。 あくまで気休め程度で参考にしてください。 1. Pデビルマン疾風迅雷のオスイチボーダー オスイチボーダーは21くらい です。 月マイナス1万くらいを目指すなら、 千円Sが16くらいの台を週1回1万勝負 って感じですね。 2. 今回作成したコード オスイチボーダー算出に使用したプログラムはこちら。 # coding: UTF-8 # 乱数作成用 import random # ボーダー算出用 import numpy as np # スランプグラフ描画用 import pylab # 試行条件の設定---ここから---- # 試行回数 loop = 1000000 # 千円Sの設定範囲 千円S_最小 = 10 千円S_最大 = 30 # 右打ち中の1回転当りの玉減り() 玉減り = 0.1 # ラウンド間のこぼし玉 こぼし玉 = 3 # 大当たり確率の設定(左打ち) 左5RRush = 319.69 / 0.50 左2RRush = 319.69 ...

P牙狼月虹ノ旅人のオスイチボーダー

イメージ
お世話になっております、スログラミングです。 勝手に作った造語をタイトルにしてるので、若干不安はありますが、言いたいことをぱっと言い表せる言葉がなかったので、勝手に言葉を作ってみました。 世にあるボーダー情報は遊タイムを含めた数値 ばかりがでてきてしまいます。 誰もが遊タイム到達まで打てるわけではない中で、 遊タイムを無視(天井を無視)したボーダー情報が必要 ではないかと思い、計算してみました。 目次 0. オスイチボーダーとは 1. P牙狼月虹ノ旅人のオスイチボーダー 2. 今回作成したコード 0. オスイチボーダーとは オスイチボーダーとは、 天井を無視(遊タイムを無視)した場合のボーダー 。 オスイチ:座って1回転目、または極めて少ない回転数で当たること ボーダー:理論上の損益分岐点 から勝手に作成した造語。 オスイチを繰り返した場合、特別な場合を除いては遊タイムの恩恵にあずかれないことから。 ちなみに、この遊び方をする人は試行回数が少ない(週1で仕事帰りに1万勝負とか)と思われるので、この数値に収束することは滅多にないと思います。 あくまで気休め程度で参考にしてください。 1. P牙狼月虹ノ旅人のオスイチボーダー オスイチボーダーは20くらい です。 遊タイムまで打ち切る場合よりも +1.5くらいボーダーが厳しくなりそう です。 月マイナス1万くらいを目指すなら、 千円Sが15くらいの台を週1回1万勝負 って感じですね。 2. 今回作成したコード オスイチボーダー算出に使用したプログラムはこちら。 # coding: UTF-8 # 乱数作成用 import random # ボーダー算出用 import numpy as np # スランプグラフ描画用 import pylab # 試行条件の設定---ここから---- # 試行回数 loop = 1000000 # 千円Sの設定範囲 千円S_最小 = 10 千円S_最大 = 30 # 右打ち中の1回転当りの玉減り() 玉減り = 0.1 # ラウンド間のこぼし玉 こぼし玉 = 3 ...

スランプグラフから千円S(千円スタート:パチンコの回転数)算出

イメージ
お世話になっております、スログラミングです。 ずっと「1kあたりの回転数」って言ってましたが、「 千円S(千円スタート) 」っていう便利な呼び方があるんですね。 勉強になります。 個人的に千円Sは、非等価店で等価ボーダーくらい回れば満足ですが、なるべくなら回る台を打ちたいですよね。 最近では、機種ごとに釘の見方を解説してくれる便利なサイトもありますが、私には釘を見分けるセンスがなかったようで諦めました。。。 ということで、タイトルにつながってきます。 スランプグラフを解析すれば千円Sわかるんじゃない? ってことですね。 では、pythonでプログラミングしていきましょう。 ※シミュレーションに使う数値や結果はスログラミング調べということで鵜呑みにしないでください。 本日のアジェンダはこちら。 1. スランプグラフから千円Sを算出する方法 2. スランプグラフの準備 3. スランプグラフのデータ位置を取得 4. 取得したデータを解析 5. 今回作成したコード 6. 結果の確認 1. スランプグラフから千円Sを算出する方法 まずは、どのようにしてスランプグラフから千円Sを算出するかを考えていきます。 例えばこんな感じのスランプグラフがあったとして、当然右肩下がりの部分が通常時とわかります。 (色付けした3ヶ所) 後半2ヶ所(水色とピンク)の部分は、回転数が少なく回転ムラの影響が大きそうなので、 長いハマり(緑色)のところの差玉から千円Sを算出 するのが、一番簡単ですね。 今回の例だと、216回転回すのに2973玉使っているので、1玉当りの回転数は216/2973[回/玉]となります。 千円当たり250玉なので、千円S=216/2973*250[回/k]で計算できますね。 とはいえ、これだとちょっともったいない気もします。 人力でざっくり計算するときはこれでも良いですが、せっかくプログラムを組んで計算するなら 水色やピンクの部分も含めて千円Sを計算したい ですよね。 ということで、今回はこんな感じで千円Sを計算したいと考えています。 1. スランプグラフからデータを抽出 2. スランプグラフから通常時の部分を抽出 3. 抽出した通常時部分から千円Sを算出 こうすることで、早い当りの時の通常時のデータ...

ディスクアップのシミュレータ

イメージ
お世話になっております、スログラミングです。 今更ながらディスクアップのシミュレータを作ってみました。 数値等はスログラミング調べということで、 皆様で適当な数値に変えながら色々遊んでいただければ と思います。 作成したコードをGoogle Colaboratoryに貼り付けると簡単に遊べます。 Google Colaboratoryの簡単な使い方はこちら→ スマホで設定判別ツールを使おう では早速Pythonでコーディングしていきましょう。 ※中身の数値等はスログラミング調べなので、実機とは異なる可能性があります。 今回のアジェンダはこちら。 0. はじめに(def文とは?) 1. 同色BB処理 2. 通常・ART時処理 3. ループ処理 4. 今回作成したコード 5. 結果の確認 0. はじめに(def文とは?) シミュレータの説明に入る前に、def文について説明しておきます。 def文とは自分オリジナルの関数を定義できる 方法です。 defは英語のdefine(=定義する)の略ですね。(多分) これだけだと理解しきれないと思いますので、 平均値算出を例 に説明していきます。 問題:2と3の平均値は? 例えば、真面目にやるとこんな感じで算出できます。 平均 = (2 + 3) / 2 print(平均) ただ、 毎回この計算式を書くのって結構めんどくさい と思います。 今回は1行で済みますが、もっと複雑な計算だといっそう面倒ですし、書き間違いも発生しそうです。 そんな時はライブラリの出番です。 平均値であれば、numpyライブラリのmean関数を用いて、このように記載できます。 import numpy as np np.mean([2, 3]) では、 もしnumpyライブラリがなかったら? そうです。 そんな時に自分で関数を作れるのがdef文 です。 今回の例題だと、こうなります。 「def 関数名():」で処理を記載しておけば、「関数名()」を実行するだけで簡単に使えます。 関数の戻り値は、「return 戻り値」で記載することで欲しい情報を得ることができます。 今回の場合は、平均値を戻り値として返すように設定しています。 def...