投稿

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 ...

pdfに設定したパスワードの総当たり解析

お世話になっております、スログラミングです。 今回はパチンコ・スロットに全く関係ありませんのでご承知おきください。 ちょっと個人的に困ったことがあってpythonで解決できたのでそのコードを紹介したいと思います。 最近はテレワークや、ハンコレス等の影響で、 今まで紙でやりとりしていた資料をpdfで送る ケースが増えてきていると思います。 そうすると、pdfにパスワードをつけて送付したりしますが、「 パスワード何にしたかって忘れますよね。 」 ということで、今回は、 総当たり(Brute Force Attack:ブルートフォースアタック、ブルートフォース攻撃)でパスワードを解析 する方法をPythonでプログラミングしてみました。 ※他人のパスワードを解析する等の行為は絶対にやめてください。 本日のアジェンダはこちら。 1. 今回作成したコード 2. 試行錯誤の記録 3. 最後に 1. 今回作成したコード おそらくこんな僻地のブログに辿りついた方は相当切羽詰まっていると思いますので、いきなり最終コードからどうぞ。 ※並列処理等も組み込んでいますが、凄い時間がかかります。 (PCスペックにもよりますが、2並列処理で、4文字英数字が30分強、5文字英数字が丸1日くらい。) # coding: UTF-8 # PDF読み込み用 from pikepdf import Pdf # 総当たりの組み合わせ作成用 import itertools # 並列処理用 from multiprocessing import Pool # 処理時間の計測用 import datetime # パスワードを入力してファイルを開いてみる処理 def FileOpen(pw, file_pass): # pdfファイルの場所を指定 pdf_file = open(file_pass, 'rb') # ファイルが開けた時のパスワードを表示 pw = ''.join(pw) try: Pdf.open(pdf_fi...

スランプグラフから千円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...