Pythonでじゃんけんしたときにあいこになる確率を求める
半分備忘録です。Pythonで数学の問題を解きます。パーセントで出してるので、おおよその答えが出ます。
問い
これをPythonで解いていきます。
(1)2人の場合
import random
import statistics
a = 0
b = 0
list = []
complete = 0
for k in range(1000): #1000回結果を取得する。
result = 0 #結果をリセット
for i in range(1000): #1000回じゃんけん
a = random.randist(0,2) #aが出す手
b = random.randist(0,2) #bが出す手
if a == b:
result += 1
complete += 1
print('{0}%完了'.format(complete/10)) #何%処理が完成したか
list.append(result/10) #リストに結果を追加する。
print('{0}%です。'.format(statistics.mean(list))) #答えを表示
答えの例…33.4547%
まず2人をaとbとします。
互いの出す手が同じであればあいこになるので、あいこを「a == b」と決めました。
「for i in range(1000)」は結果を安定させるために1000回じゃんけんしています。出した手が同じなら、resultに1ずつ追加していきます。最後に10で割ってパーセントで出しています。それをリストに入れています。この作業を1000回繰り返します。
最後の「print('{0}%です。'.format(statistics.mean(list)))」では、リストに入れた値の平均値を出しています。format()は{0}のところに代入するために使っています。statistics.mean(list)はリストの平均を出しています。
(2)3人の場合
import random
import statistics
a = 0
b = 0
© = 0
list = []
complete = 0
for k in range(1000): #1000回結果を取得する。
result = 0 #結果をリセット
for i in range(1000): #1000回じゃんけん
a = random.randist(0,2) #aが出す手
b = random.randist(0,2) #bが出す手
c = random.randist(0,2) #cが出す手
if (a!=b and b!=c and c!=a) or (a==b==c): #ここが大きく変わった
result += 1
complete += 1
print('{0}%完了'.format(complete/10)) #何%処理が完成したか
list.append(result/10) #リストに結果を追加する。
print('{0}%です。'.format(statistics.mean(list))) #答えを表示
答えの例…33.3094%
3人目を追加するために、「c」という変数を追加しました。
互いの出す手が同じか3人が全員違う手を出せばあいこになるので、あいこを「(a!=b and b!=c and c!=a) or (a==b==c)」と決めました。
あとがき
Pythonの練習用に書きました。今後もこんな感じの記事を出すかもしれません。
[▶︎]YouTube
🐱Scratch
いいなと思ったら応援しよう!
Scratch、Python、Unity、ラズパイなどをいじってます。ソフト系に傾いていってます。 ↓自分のサイト(Googleサイトですみません) https://sites.google.com/view/Oldcoinmania