![見出し画像](https://assets.st-note.com/production/uploads/images/108227732/rectangle_large_type_2_5b73f7fbaca818f1c86754f58c51cbce.jpeg?width=1200)
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回やって出た勝率は
![](https://assets.st-note.com/img/1686737721482-8BTpkffDOz.png?width=1200)
画像通り31%。何度かやっていくと、25%から40%辺りでかなり勝率は揺れるようだ。
精度を上げるために、10万回回してみたら、33.16%だった。
10万回じゃんけんするのに、およそ1.5秒。
![](https://assets.st-note.com/img/1686738406129-TNPGXiREAb.png)
10万回だよ! 一瞬だよ。。すごい!
![](https://assets.st-note.com/img/1686738030258-CKzGo2QvYu.png?width=1200)
調子に乗って1000万回やらせてみたら、予測数値に限りなく近づいていく。33.35%。
さすがに時間はかかった。11.96秒。
![](https://assets.st-note.com/img/1686738448063-GjvLsFtYjN.png)
でも1000万回を10秒って。
「コンピュータ」なのだなあ。。と改めて思ったり。
といった感じで遊んでばかりいてなかなか前に進めない。
だけど、楽しみながらやるのが一番なのよね。