1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

自作ブラックジャックのCPUが強すぎる気がしたので、自動で1万回プレイして勝率を確認してみた

Posted at

「これプレイヤーが勝てないように仕組んでない?」

G'sアカデミーというプログラミングスクールを卒業しました。卒業生は再履修できるのでもう一周しています。

じゃんけんをJavascriptで作るという課題があり、ブラックジャックをKotlin Javascriptで作って提出しました(G'sの課題はカオスの塊)。チェックしてくれたスタッフのAさんに「昨日からプレイしているけど、1回も勝てていない。これプレイヤーが勝てないように仕組んでない?」と聞かれました。

そんな仕様にした記憶はなかったので、自分でも再度プレイしたのですが3勝10敗でした。確かにちょっと勝率が偏っているかもしれません。勝率が50%だとすると3勝10敗になる確率は3.5%くらい(数学苦手なので計算間違ってるかも)

検証しよう

たまたま運が悪かっただけかもしれないので、試行回数を1万回ぐらいに増やして勝率を計算してみましょう。手でポチポチするのはめんどくさいです。怠惰はプログラマの美徳です。めんどくさいことはプログラムにさせましょう。

という訳で、Seleniumに自分が作ったブラックジャックを1万回ぷれいさせることにしました。

私の環境とバージョン情報

今回は特に環境がハマりどころなので要注意(後述)

  • OS: Windows10 1803
  • intelliJ: 2019.3 Community Edition
  • Kotlin: 1.3.41-release-150 (JRE 1.8.0_202-release-1483-b03)
  • Selenium: selenium-server-standalone-3.141.59.jar
  • Chrome: 79.0.3945.79
  • Chrome driver: 79.0.3945.36
  • npm: 6.9.0

テストしたいブラックジャック

https://nagashimam.github.io/BlackJack/
ソース:https://github.com/nagashimam/BlackJack

Seleniumスクリプト

ソース:https://github.com/nagashimam/BlackJackTest

スクリプトを書く際のハマりどころ

環境構築自体はたくさん記事があるので、私がハマったところについて。

Chromeとドライバーのバージョン

この2つの整合性が取れていないとTimeoutExceptionで強制終了になります。ドライバーのどのバージョンがどのChromeに対応しているかはドキュメントを参照してください

有効な Win32 アプリケーションではありません。

エラーメッセージを保存し忘れたので若干違うかもしれませんが、npmでドライバーをインストールすると、上記のエラーメッセージが出てスクリプトを実行できません

コマンドプロンプトで

where chromedriver

と打つと

(パス)/chromedriver
(パス)/chromedriver.cmd

と出てきました。正しい方法ではないかもしれませんが、私の環境ではchromedriver(cmdがついていない方)を削除すると動くようになりました。

検証結果

保存する前にブラウザを閉じてしまった(笑)ので、記憶違いかもしれませんが勝率は42%だったはずです。
1万回実行した後にスクリーンショットをとるようにスクリプトを変えたので、今晩もう一度実行してみます。

仮に勝率を40%とすると、3勝10敗になる確率は11%ほどなので、ありえなくはないかな、ぐらいの数字ですね。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?