8P3, 7P5
nPr = n(n-1)(n-2)..(n-r+1) = n!/(n-r)!
# 8P3
numN = int(input('numN 입력: '))
numR = int(input('numR 입력: '))
result = 1 # 최종값을 변수로 만들어줌. 곱셈이니까 초기값 1
for n in range(numN, (numN-numR), -1):
print('{}'.format(n))
result *= n
print('result: {}'.format(result))
-->
numN 입력: 8
numR 입력: 3
8
7
6
result: 336
numN 입력: 7
numR 입력: 5
7
6
5
4
3
result: 2520개의 경우의 수
{1, 2, 3}
->
{1, 2, 3} = {2, 3, 1} = {3, 1, 2}
{1, 3, 2} = {2, 1, 3} = {3, 2, 1}
3!
-> - = 2
3
공식: n!/n or (n-1)!
n = int(input('친구 수 입력: '))
result = 1
for i in range(1, n): #n+1이 아니라 n인 이유는 원순열이기 때문
result *= i
print('result: {}'.format(result))
-->
친구 수 입력: 4
result: 6
{1, 2, 3}
* 순열: 순서 상관있게 r개 선택
{1, 2}, {1, 3}, {2, 1}, {2, 3}, {3, 1}, {3, 2}
= 6가지 경우
* 조합: 순서 상관없이 r개 선택
{1, 2}, {1, 3}, {2, 3}
= 3가지 경우
{1, 2, 3, 4}
- 3 *
- 2 - 4
- 2 *
1 - 3 - 4
- 2
- 4 - 3
----------
- 3 *
- 1 - 4
- 1 *
2 - 3 - 4
- 1
- 4 - 3
----------
- 2 *
- 1 - 4
- 1 *
3 - 2 - 4
- 1
- 3 - 4
----------
- 2
- 1 - 3
- 1
4 - 2 - 3
- 1
- 3 - 2
= 24
-- = 4
6(겹침)
{1, 2, 3}
->
3P2 = 3 * 2 = 6
3C2 = 3P2 / 2! = 3
{1, 2, 3, 4}
->
4P3 = 4 * 3 * 2= 24
4C3 = 4P3 / 3! = 4
nCr = nPr = n!
- -
r! = r! (n-r)!
8C3 = 8 * 7 * (8-3+1 = 6) / 3 * 2 = 56
8! 8 * 7 * 6 * 5 * 4 * 3 * 2
- = ---------------
3!(8-3)! 3 * 2 * ( 5* 4* 3* 2)
7C5 = 7 * 6 * 5 * 4 * (7-5+1 = 3) / 5 * 4 * 3 * 2 = 21
7! 7 * 6 * 5 * 4 * 3 * 2
- = ---------------
5!(7-5)! 5 * 4 * 3 * 2 * (2)
5C2 = 5! / 2! (5-2)! = 5x4x3x2 / 2x 3x2 = 10개
8C3, 7C5
#조합: n*(n-1)*(n-2)*(n-r+1) / r! = n! / r!(n-r)!
numN = int(input('numN 입력: '))
numR = int(input('numR 입력: '))
resultP = 1 #순열값
resultR = 1 #R! 값
resultC = 1 #조합값
for n in range(numN, (numN - numR), -1): #순열구하는중
print('n: {}'.format(n))
resultP *= n
print('resultP: {}'.format(resultP))
for n in range(numR, 0, -1): #r! 구하는중 #1까지니까 0으로
print('n: {}'.format(n))
resultR *= n
print('resultR: {}'.format(resultR))
resultC = int(resultP / resultR)
print('resultC: {}'.format(resultC))
-->
numN 입력: 7
numR 입력: 5
n: 7
n: 6
n: 5
n: 4
n: 3
resultP: 2520
n: 5
n: 4
n: 3
n: 2
n: 1
resultR: 120
resultC: 21
#5개중 2개 뽑을 때, 삼각형과 사각형이 동시에 선택될 확률? 딱 한가지
result = (1/resultC) * 100
print('{}%'.format(round(result, 2)))
-->
numN 입력: 5
numR 입력: 2
n: 5
n: 4
resultP: 20
n: 2
n: 1
resultR: 2
resultC: 10
10.0%
[동전]
[주사위]
모든 사건 = 표본공간(sample)
특정 사건 = 사건(event)
[뽑기]
박스에 '꽝'이 적힌 종이가 4장 있고, '선물'이 적힌 종이가 3장 있다. 3장을 뽑을 경우 다음 경우의 수를 구해보자
= 순서 상관x. 7C3 = 7P3 / 3! = 35 = 전체
--
[뽑기]
박스에 '꽝'이 적힌 종이가 5장 있고, '선물'이 적힌 종이가 2장 있다. 3장을 뽑을 경우 다음 경우의 수를 구해보자
= 순서 상관x. 7C3 = 7P3 / 3! = 35 = 전체
전체 = 7C3 = 35
꽝 2장 = 4C2 = 6
선물 1장 = 3C1 = 3
def proFun(): #함수 호출
numN = int(input('numN 입력: '))
numR = int(input('numR 입력: '))
resultP = 1
resultR = 1
resultC = 1
for n in range(numN, (numN - numR), -1): #순열
resultP *= n
print('resultP: {}'.format(resultP))
for n in range(numR, 0, -1): #r!
resultR *= n
print('resultR: {}'.format(resultR))
resultC = int(resultP / resultR)
print('resultC: {}'.format(resultC))
return resultC #함수 반환
sample = proFun()
print('sample: {}'.format(sample))
event1 = proFun()
print('event: {}'.format(sample))
event2 = proFun()
print('event: {}'.format(sample))
probability = (event1 * event2) / sample #확률값
print('probability: {}%'.format(round(probability * 100, 2)))
-->
numN 입력: 7
numR 입력: 3
resultP: 210
resultR: 6
resultC: 35
sample: 35
numN 입력: 4
numR 입력: 2
resultP: 12
resultR: 2
resultC: 6
event: 35
numN 입력: 3
numR 입력: 1
resultP: 3
resultR: 1
resultC: 3
event: 35
probability: 51.43%