728x90
반응형

1. 10P2 , 5P3 , 5C3 , (10 , 2)

 

# 1. 10 P 2

a = len(list(itertools.permutations([i for i in range(10)] , 2)))
a

==> 90

 

# 2. 5 P 3

a = len(list(itertools.permutations([i for i in range(5)] , 3)))
a

==> 60

 

# 3. 5 C 3

a = len(list(itertools.combinations([i for i in range(5)] , 3)))
a

==> 10

 

# 4. (10 ,2 )

a = len(list(itertools.combinations([i for i in range(10)] , 2)))
a

==> 45

 

2. 경우의 수

 

1> 주사위 5번 던지는 경우의 표본점의 수

 

※표본점이란 ? 

==> 통계적 실험시 나타날 수 있는 개개의 실험 결과

 

a = len(list(itertools.product(np.arange(1,7) , repeat = 5)))
a

==> 중복 순열 Product 활용!

==> 7776

 

2> 동전 10번 던지는 경우의 표본점의 수

 

a = len(list(itertools.product(np.arange(2) , repeat= 10)))
a

==> 중복 순열 Product 활용!

==> 1024

 

 

3> 52장의 카드에서 3장의 카드를 차례대로 뽑는 경우의 수

 

a = len(list(itertools.permutations(np.arange(52) , 3)))
a

==> 순열 Permutations 활용!

==> 132600

 

4> 빨간공 5개와 파란 공 5개가 들어있는 주머니에서 순서 고려하지 않고 빨간 공 2개와 파란 공 3개 꺼내는 경우의 수

 

red = ['red' for i in range(5)]
blue = ['blue' for i in range(5)]

a = len(list(itertools.combinations(red , 2))) + len(list(itertools.combinations(blue , 2)))
a

==> 조합 Combinations 활용!

==> 20

 

 

3. 경우의 수_2

 

1> 문자 a,b,c,d를 순서 고려하여 배열

 

a = ['a' , 'b' , 'c' , 'd']

b = list(itertools.permutations(a, 4))
print(b)
print(len(b))

==> 순열 Permutations 활용!

==> 24

 

2> 문자 a,e,i,o,u 에서 3개 택하여 순서 고려하여 나열

 

a = ['a' , 'e' , 'i' , 'o' , 'u']

b = list(itertools.permutations(a, 3))
print(b)
print(len(b))

==> 순열 Permutations 활용!

==> 60

 

3> 문자 a,e,i,o,u 에서 중복 허락하여 3개 택하여 순서 고려하여 나열

 

print(len(b))
#%%
b = list(itertools.product(a , repeat = 3))
print(b)
print(len(b))

==> 순서 고려이므로 중복순열 Product 활용!

==> 125

 

4> 문자 a,e,i,o,u 에서 중복 허락하여 3개 택하여 순서 고려하지 않고 선택

 

b = list(itertools.combinations_with_replacement(a, 3))
print(len(b))
print(b)

==> 순서 고려하지 않고 중복조합 combinations_with_replacement 활용!

==> 35

 

 

4. 동전을 4번 던질 때 사건 구하기

 

1> 표본공간

 

※표본공간이란 ?  모든 결과들의 집합 의미

 

a = list(itertools.product(np.arange(2) , repeat = 4))
print(a)
print(len(a))

==> 16

 

2> 앞면이 꼭 2번 나오는 사건

 

c = list(filter(lambda x : collections.Counter(x).most_common()[0][1] >=2 and collections.Counter(x).most_common()[0][0] ==1  ,a))
c

==> Filter 함수 와 most_common , collections.Counter() 기억하자!!!!!

[(0, 1, 1, 1), (1, 0, 0, 1), (1, 0, 1, 0), (1, 0, 1, 1), (1, 1, 0, 0), (1, 1, 0, 1), (1, 1, 1, 0), (1, 1, 1, 1)]

 

 

3> 처음 2번의 결과에서 뒷면이 나오는 사건

c = list(filter(lambda x : collections.Counter(x).most_common()[0][0] == 0 and collections.Counter(x).most_common()[0][1] >=2, a) )
d = []
for i in c:
    d = [j for j,k in itertools.groupby(i)]
    if len(d)<3:
        print(i)

(0, 0, 0, 0)
(0, 0, 0, 1)
(0, 0, 1, 1)
(1, 0, 0, 0)

 

4> 처음 3번 연속하여 동일한 면이 나오는 사건

 

from itertools import groupby

c = list(filter(lambda x : collections.Counter(x).most_common()[0][1] ==3 ,a))
# c
# a = []
d= []
for i in c:
    d = [a for a , b in groupby(i)]
    if len(d)==2:
        print(i)

==> [a for a , b in groupby(i) ] ==> [0,1] [0,1,0] ==> 중복된 것들 갖고 온다.

(0, 0, 0, 1)
(0, 1, 1, 1)
(1, 0, 0, 0)
(1, 1, 1, 0)

 

 

5> 앞면과 뒷면 또는 뒷면과 앞면이 번갈아 나오는 사건

 

c = list(filter(lambda x : collections.Counter(x).most_common()[0][1] == 2 , a))
d = []
for i in c:
    d = [j for j,k in itertools.groupby(i)]
    if len(d)==4:
        print(i)

(0, 1, 0, 1)
(1, 0, 1, 0)

 

 

출처 :  [쉽게 배우는 생활속의 통계학]  [북스힐 , 이재원] 

※혼자 공부 정리용

728x90
반응형

+ Recent posts