320x100
# 확률
# 순열은 순서가 고정된 확률의 느낌이고
# 확률은 순서가 무작위적인 확률의 느낌이다.
# 10개중에 6개의 꽝을 뽑을 확률 -> 10C6
# 6개의 꽝 중에서 3개의 꽝을 뽑을 확률 -> 6C3
# 10개의 카드중에서 4장이 당첨카드다.
# [전체의 경우의 수] 위의 조건과 같은 경우에 대괄호 같이 만들어지는 확률이 10C6이고 (10개의 카드 중에서 6개의 꽝을 뽑을 확률)
# 중괄호 같이 만들어 지는 확률이
# 1) [특정 경우의 수] 6개의 꽝 중에서 3장을 뽑을 확률 -> 6C3
# 2) [특정 경우의 수] 4장의 당첨 중에서 3장을 뽑을 확률 -> 4C3
#1 확률을 구하기 위해서는 순열이 필요하다.
#2 때문에 아래와 같이 순열을 구하는 공식을 함수화 시킨 후 에 확률을 구해준다.
#3 음... 좀 더 정확히는 팩토리얼(순열에 해당하는) -> 순열 -> 조합 -> 확률 순인 것 같다.
def proFun():
numN = int(input('numN 입력: '))
numR = int(input('numR 입력: '))
resultP = 1
resultR = 1
resultC = 1
# 순열(P)
for n in range(numN, (numN - numR), - 1):
resultP *= n
print('순열 resultP: {}'.format(resultP))
# R에 대한 팩토리얼
for i in range(numR, 0, -1):
resultR *= i
print(f'R에 대한 팩토리얼 resultR: {resultR}')
# 조합(C)
resultC = int(resultP / resultR)
print(f'조합 resultC: {resultC}')
return resultC
sample = proFun()
#0 확률 전체 구하는 순서.
#1 10C6에 대한 조합, 210이 나온다. N값은 10, R값은 6
print(f'sample: {sample}')
#2 6C3에 대한 조합. (꽝 중의 꽝), 20이 나온다.
event1 = proFun()
print(f'event1: {event1}')
#3 4C3에 대한 조합. (당첨 중의 당첨), 4가 나온다.
event2 = proFun()
print(f'event2: {event2}')
# 이 함수를 돌려가면서 얻는 수식 중 중요 정보는 "조합"에 해당하는 "resultC"
#4 여태까지 누적된 1,2,3에서 뽑힌 "조합을 토대로 "확률"을 구하는 계산식
probability = (event1 * event2) / sample
print('probability: {}%'.format(round(probability * 100, 2)))
300x250
'개발일지 > Python' 카테고리의 다른 글
[복기] 파이썬 난수 발생 모듈 (0) | 2022.05.03 |
---|---|
[복기] 파이썬 함수 및 중첩함수 기본 원리 (0) | 2022.05.03 |
파이썬 계차 수열 코드 (공식 응용 버전) (0) | 2022.05.02 |
파이썬 시그마 코드 (공식응용 버전 포함) (0) | 2022.05.01 |
파이썬 등비 수열 코드 (공식응용버전 포함) (0) | 2022.05.01 |