
Pythonで遊ぶ
演習問題で「じゃんけんゲーム」を作った。
かなりググって何とか自力で仕上げることができた。
模範解答とは違うコードとなったが、出てくる結果は同じ、なので合格をもらってもいいだろう。
その発展系で、コンピュータを相手にじゃんけんを繰り返し、その勝率を求めてみる、というのもやった。
import random
from random import randint
pong = 100
w = 0
for i in range(pong):
my_turn = "グー"
m = randint(0, 2)
hand = ["グー", "チョキ", "パー"]
pc_turn = hand[m]
if my_turn == pc_turn:
result = "あいこ"
elif my_turn == "グー" and pc_turn == "チョキ":
result ="勝ち"
elif my_turn == "チョキ" and pc_turn == "パー":
result ="勝ち"
elif my_turn == "パー" and pc_turn == "グー":
result ="勝ち"
elif my_turn == "グー" and pc_turn == "パー":
result ="負け"
elif my_turn == "チョキ" and pc_turn == "グー":
result ="負け"
elif my_turn == "グー" and pc_turn == "パー":
result ="負け"
if result == "勝ち":
w = w + 1
Win = round((w / pong) * 100, 2)
print("勝率は{}%です。".format(Win))
自分でいちいち「手」を入力するのではない。出す手は一つ。ここでは「ぐー」だけを出して、あとはランダムにPCに手を出させて勝率を求める、というもの。「forループ」を使って次々と結果を出させていく。
この100回やって出た勝率は

画像通り31%。何度かやっていくと、25%から40%辺りでかなり勝率は揺れるようだ。
精度を上げるために、10万回回してみたら、33.16%だった。
10万回じゃんけんするのに、およそ1.5秒。

10万回だよ! 一瞬だよ。。すごい!

調子に乗って1000万回やらせてみたら、予測数値に限りなく近づいていく。33.35%。
さすがに時間はかかった。11.96秒。

でも1000万回を10秒って。
「コンピュータ」なのだなあ。。と改めて思ったり。
といった感じで遊んでばかりいてなかなか前に進めない。
だけど、楽しみながらやるのが一番なのよね。