#はじめに
どっかの入試問題の数学の確率を解けと言われて、考えたくなくなって、pythonに任せたら一瞬だった話
#問題
1から20までの整数が書かれたカードが20枚のカードがある。17枚のカードを同時に取り出したカードの数字の和が3の倍数になる確率を求めよ。
#解決法
手で解こうとすると、組み合わせ考えて、、、3枚のカードが3のばいすうになればいいから、、、あぁめんどくさい、全部出してプログラムで書こう、、、
#コード
pythonで書きました。処理速度とかどうでもいいくらいの短さなので、for文使いまくり。
import numpy as np
import random
calculuse = []
result = []
for i in range(1, 20):
for k in range (i+1, 21):
for l in range(k+1, 21):
a = i+k+l
print('(i, k, l) =',i,(','),k,(','),l,('sum='),i+k+l)
array = a
calculuse.append(array)
if a%3 == 0:
print('true')
else:
print('false')
arr = [a, a%3==0]
if a%3 ==0:
result.append(arr)
print(len(result))
print(len(calculuse))
これだけで、完了!
(i, k, l) = 1 , 2 , 3 sum= 6
true
(i, k, l) = 1 , 2 , 4 sum= 7
false
(i, k, l) = 1 , 2 , 5 sum= 8
false
(i, k, l) = 1 , 2 , 6 sum= 9
true
(i, k, l) = 1 , 2 , 7 sum= 10
false
(i, k, l) = 1 , 2 , 8 sum= 11
false
(i, k, l) = 1 , 2 , 9 sum= 12
true
(i, k, l) = 1 , 2 , 10 sum= 13
false
(i, k, l) = 1 , 2 , 11 sum= 14
false
(i, k, l) = 1 , 2 , 12 sum= 15
true
(i, k, l) = 1 , 2 , 13 sum= 16
false
(i, k, l) = 1 , 2 , 14 sum= 17
false
(i, k, l) = 1 , 2 , 15 sum= 18
true
(i, k, l) = 1 , 2 , 16 sum= 19
false
(i, k, l) = 1 , 2 , 17 sum= 20
false
(i, k, l) = 1 , 2 , 18 sum= 21
:
:
:
:
384
1140
ということで、答えは
384/1140
になります!
って友達に出したら考えを知りたいんだがといわれた話。