Q: 주머니 속에 숫자 1이 적힌 카드가 세 장, 숫자 2가 적힌 카드가 3장, 3이 적힌 카드가 3장이 들어있다. 이 주머니에서 임의로 세장의 카드를 동시에 뽑을 때, 카드에 적힌 숫자의 합이 3의 배수가 될 확률은?
5/14 #답
0.35714285714285715
card=[1,1,1,2,2,2,3,3,3]
import random
random.shuffle(card)
card
[3, 3, 1, 2, 3, 1, 1, 2, 2]
card[:3]
[3, 3, 1]
count=100000
sus=0
for i in range(count):
random.shuffle(card)
if sum(card[:3]) % 3 ==0:
sus=sus+1
print("성공확률은 {}이다".format(sus/count))
성공확률은 0.35674이다
carddic={'a1':1,'a2':1,'a3':1,'b1':2,'b2':2,'b3':2,'c1':3,'c2':3,'c3':3}
carddic.keys()
dict_keys(['a1', 'a2', 'a3', 'b1', 'b2', 'b3', 'c1', 'c2', 'c3'])
carddic.values()
dict_values([1, 1, 1, 2, 2, 2, 3, 3, 3])
carddic.items()
dict_items([('a1', 1), ('a2', 1), ('a3', 1), ('b1', 2), ('b2', 2), ('b3', 2), ('c1', 3), ('c2', 3), ('c3', 3)])
import itertools
itertools.permutations(carddic.keys())
<itertools.permutations at 0x110098ca8>
len(list(itertools.permutations(carddic.keys())))
362880
9*8*7*6*5*4*3*2*1
362880
per_with_eq=itertools.permutations(carddic.values())
a=set((per_with_eq))
len(a)
1680
len(list(itertools.permutations(carddic.keys(),3)))
504
9*8*7
504
len(list(itertools.combinations(carddic.keys(),3)))
84
standard=list(itertools.combinations(carddic.keys(),3))
standard
[('a1', 'a2', 'a3'), ('a1', 'a2', 'b1'), ('a1', 'a2', 'b2'), ('a1', 'a2', 'b3'), ('a1', 'a2', 'c1'), ('a1', 'a2', 'c2'), ('a1', 'a2', 'c3'), ('a1', 'a3', 'b1'), ('a1', 'a3', 'b2'), ('a1', 'a3', 'b3'), ('a1', 'a3', 'c1'), ('a1', 'a3', 'c2'), ('a1', 'a3', 'c3'), ('a1', 'b1', 'b2'), ('a1', 'b1', 'b3'), ('a1', 'b1', 'c1'), ('a1', 'b1', 'c2'), ('a1', 'b1', 'c3'), ('a1', 'b2', 'b3'), ('a1', 'b2', 'c1'), ('a1', 'b2', 'c2'), ('a1', 'b2', 'c3'), ('a1', 'b3', 'c1'), ('a1', 'b3', 'c2'), ('a1', 'b3', 'c3'), ('a1', 'c1', 'c2'), ('a1', 'c1', 'c3'), ('a1', 'c2', 'c3'), ('a2', 'a3', 'b1'), ('a2', 'a3', 'b2'), ('a2', 'a3', 'b3'), ('a2', 'a3', 'c1'), ('a2', 'a3', 'c2'), ('a2', 'a3', 'c3'), ('a2', 'b1', 'b2'), ('a2', 'b1', 'b3'), ('a2', 'b1', 'c1'), ('a2', 'b1', 'c2'), ('a2', 'b1', 'c3'), ('a2', 'b2', 'b3'), ('a2', 'b2', 'c1'), ('a2', 'b2', 'c2'), ('a2', 'b2', 'c3'), ('a2', 'b3', 'c1'), ('a2', 'b3', 'c2'), ('a2', 'b3', 'c3'), ('a2', 'c1', 'c2'), ('a2', 'c1', 'c3'), ('a2', 'c2', 'c3'), ('a3', 'b1', 'b2'), ('a3', 'b1', 'b3'), ('a3', 'b1', 'c1'), ('a3', 'b1', 'c2'), ('a3', 'b1', 'c3'), ('a3', 'b2', 'b3'), ('a3', 'b2', 'c1'), ('a3', 'b2', 'c2'), ('a3', 'b2', 'c3'), ('a3', 'b3', 'c1'), ('a3', 'b3', 'c2'), ('a3', 'b3', 'c3'), ('a3', 'c1', 'c2'), ('a3', 'c1', 'c3'), ('a3', 'c2', 'c3'), ('b1', 'b2', 'b3'), ('b1', 'b2', 'c1'), ('b1', 'b2', 'c2'), ('b1', 'b2', 'c3'), ('b1', 'b3', 'c1'), ('b1', 'b3', 'c2'), ('b1', 'b3', 'c3'), ('b1', 'c1', 'c2'), ('b1', 'c1', 'c3'), ('b1', 'c2', 'c3'), ('b2', 'b3', 'c1'), ('b2', 'b3', 'c2'), ('b2', 'b3', 'c3'), ('b2', 'c1', 'c2'), ('b2', 'c1', 'c3'), ('b2', 'c2', 'c3'), ('b3', 'c1', 'c2'), ('b3', 'c1', 'c3'), ('b3', 'c2', 'c3'), ('c1', 'c2', 'c3')]
def desc(se):
''' 값의 합이 3 배수인지 판단하는 함수'''
return sum(list(map(lambda a : carddic[a],se)))%3 ==0
desc(('b3', 'c1', 'c2'))
False
su=0
for i in standard:
if desc(i):
su=su+1
print(su)
30
즉 해당경우는 30가지이며, 원하는 확률은 30/84 이다.