大人数でじゃんけんをするとなかなか勝負が決まりません。
何回やれば勝負がつくか。
勝負が決まるまでの平均回数をシミュレートしてみました。
シミュレーション結果
結果は下表のとおりです。2人から15人の場合を計算しました。
ランダムにグー、チョキ、パーを出して、手がグーとチョキだけなど2種類になるまでの回数を求め、平均しています。
2人の場合は平均1.5回で勝負が決まります。
3人の場合も平均1.5回でした。
4人では平均1.9回で以降、増えていきます。
15人だと平均146回でした。
| 人数 | 平均回数 |
|---|---|
| 2 | 1.5034 |
| 3 | 1.5125 |
| 4 | 1.9467 |
| 5 | 2.6794 |
| 6 | 3.9307 |
| 7 | 5.7908 |
| 8 | 8.6049 |
| 9 | 12.844 |
| 10 | 19.3431 |
| 11 | 28.7035 |
| 12 | 43.3142 |
| 13 | 64.6853 |
| 14 | 97.6583 |
| 15 | 146.1063 |
コード
コードを載せておきます。Pythonです。
import random
def main():
for ninzu in range(2, 16):
print(ninzu, heikin(ninzu))
def heikin(ninzu):
all = 10000
results = []
for i in range(all):
result = once(ninzu)
results.append(result)
average = sum(results) / all
return average
def once(ninzu):
te = []
ct = 0
while True:
ct += 1
te = []
for n in range(ninzu):
te.append(random.randint(0, 2))
te = list(set(te))
if len(te) == 2:
return ct
if __name__ == "__main__":
main()
def main():
for ninzu in range(2, 16):
print(ninzu, heikin(ninzu))
def heikin(ninzu):
all = 10000
results = []
for i in range(all):
result = once(ninzu)
results.append(result)
average = sum(results) / all
return average
def once(ninzu):
te = []
ct = 0
while True:
ct += 1
te = []
for n in range(ninzu):
te.append(random.randint(0, 2))
te = list(set(te))
if len(te) == 2:
return ct
if __name__ == "__main__":
main()


コメント