◾순열
순열(nPr)
: 순서있게 n 개에서 r개를 선택하여 나열하는 경우의 수
- nPr = n (n-1) (n-2) ... (n-r+1), (단, 0 < r <= n)
- 1 2 3 4 : 4P2
- 1 (2 / 3 / 4) : 3가지
- 2 (1 / 3 / 4) : 3가지
- 3 (1 / 2 / 4) : 3가지
- 4 (1 / 2 / 3) : 3가지
- 12가지 : 4 * 3 = 12
- 순열은 팩토리얼(계승)을 이용해서 나타낼 수 있다.
result = 1
for n in range(numN, numN-numR, -1):
print('n : {}'.format(n))
result = result * n
def factorialFunc(n):
if n == 1 or n == 0 :
return 1
else :
return n * factorialFunc(n-1)
result = int(factorialFunc(numN) / factorialFunc(numN-numR))
원 순열
: 시작과 끝의 구분이 없는 순열(위치가 달라도 절대적인 순서가 같다면 같은 것으로 취급한다.)
- 1 2 3
- (1 2 3), (1 3 2), (2 1 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)
- (1 2 3) == (2 3 1), (3 1 2)
- (1 3 2) == (2 1 3), (3 2 1)
- 원 순열 : n!/n = (n-1)!
result = 1
for i in range(1, n):
result *= i
◾조합
조합(nCr)
: 순서에 상관없이 n개에서 r개를 택하는 경우의 수
- nCr = nPr / r! = n!/(r! * (n-r)!)
- 1 2 3
- 1 (2 3) : 2가지
- 2 (3) : 1가지
- 3 ( ) : 0가지
- 3 가지 : 3! / (2! * 1!) = 3
resultP = 1
resultR = 1
resultC = 1
for n in range(numN, numN-numR, -1):
resultP *= n
for n in range(numR, 0, -1):
resultR *= n
resultC = int(resultP / resultR)
◾확률
확률
: 모든 사건에서 특정 사건이 일어날 수 있는 수를 나타낸 것
표본 공간
: 모든 사건
사건
: 특정 사건
- 동전 예시
- 표본 공간 : 앞, 뒤 2가지
- 특정 사건 : 앞-1가지, 뒤-1가지
- 확률 : 앞-1/2, 뒤-1/2
- 주사위
- 표본 공간 : 1, 2, 3, 4, 5, 6 6가지
- 특정 사건 : 1-1가지, 2-1가지, 3-1가지, ..., 6-1가지
- 확률 : 1-1/6, 2-1/6, 3-1/6, ..., 6-1/6
- 조합을 이용한 확률 계산
- 뽑기 : 꽝 4장, 선물 3장
- 3장을 뽑는 전체 경우의 수 : 7C3 = 7P3 / 3! = 35
- 3장을 뽑는 각 경우의 수의 확률
- 꽝 0, 선물 3 : 3C3 / 35 = 1 / 35
- 꽝 1, 선물 2 : (4C1 * 3C2) / 35 = 12 / 35
- 꽝 2, 선물 1 : (4C2 * 3C1) / 35 = 18 / 35
- 꽝 3, 선물 0 : 4C3 / 35 = 4 / 35
def comFunc():
numN = int(input('n 입력 : '))
numR = int(input('r 입력 : '))
resultP = 1
resultR = 1
resultC = 1
for n in range(numN, numN-numR, -1):
resultP *= n
for n in range(numR, 0, -1):
resultR *= n
resultC = int(resultP / resultR)
return resultC
sample = comFunc()
print('sample : {}'.format(sample))
event1 = comFunc()
print('event1 : {}'.format(event1))
event2 = comFunc()
print('event2 : {}'.format(event2))
probability = event1 * event2 / sample * 100
print('probability : {:.2f}%'.format(probability))