Day25. 기초 수학 (7)

Junghwan Park·2023년 5월 11일
0

스터디노트

목록 보기
26/54

순열

  • 순열 이란?
    순열은 순서가 가장 중요!

  • n개에서 r개를 택하여 나열하는 경우의 수


    {1, 2, 3, 4}

    2 1 1 1
    1 3 2 3 3 2 4 2
    4 4 4 3


    순열에서 1,2 와 2,1 은 다르게 본다!


    nPr = n(n - 1)(n - 2) ... (n - r + 1), (단 0 < r <= n)
    n은 모든 항의 개수
    r은 뽑아내는 수의 개수


    4P2
  • 순열은 팩토리얼(계승)을 이용해서 나타낼 수 있다.


    n! / (n - r)!
  • 실습1
    다음 순열의 값을 구해보자.


    nPr = n(n - 1)(n - 2) ... (n - r + 1)


    8P3 → 8 7 (5 + 1) = 336
    8!/ 5! → 8 7 6 5 4 3 2 1 / 5 4 3 2 1


    7P5 →
    7! → 7
    6 5 4 3 2 1
    5! → 5
    4 3 2 * 1
  • 실습2
    카드 4장을 일렬로 나열하되 삼각형과 사각형이 서로 이웃하도록 나열하는 경우의 수를 구하자.
    ●▲■♠
    ▲■을 하나로 보고 총 3장으로 생각하고 계산한다!
    3! = 6
    ▲■인 경우
    ■▲인 경우가 있으므로 곱하기 2를 해준다
    3! * 2 = 12

순열(파이썬)

  • 파이썬을 이용해서 다음 순열들의 값을 구하는 프로그램을 만들어 보자.


    8P3, 7P5
numN = int(input('numN 입력 : '))
numR= int(input('numR 입력 : '))
result = 1

# nPr = n(n-1)(n-2)...(n-r+1)
for n in range(numN, (numN - numR), -1):    # n - r + 1 이 공식에서 맞지만, for문에서는 원래 -1 해주므로 상쇄 되므로 n - r로 한다
    print('n : {}'.format(n))
    result = result * n

print('result : {}'.format(result))
  • 원 순열


    시작과 끝의 구분이 없는 순열
    {1, 2, 3}

    {1, 2, 3} {1, 3, 2}
    {2, 1, 3} {2, 3, 1}
    {3, 1, 2} {3, 2, 1}

    3!/3 → 2


    → n!/n or (n-1)!
  • 4명의 친구가 원탁 테이블에 앉을 수 있는 순서를 계산해보자.
n = int(input('친구 수 입력 : '))
result = 1
for i in range(1, n):   # for문에서는 -1을 원래 해주므로 공식에 있는 -1을 상쇄하여 그대로 n이 들어간다!
    resutl *= i

print('result : {}'.format(result))

조합

  • 순서 상관없이 r개 선택하자!
    n개에서 r개를 택하는 경우의 수


    {1, 2, 3}


    순열 = 순서 상관있이 r개 선택 6가지 경우 [1, 2][1, 3][2, 1][2, 3][3, 1][3, 2]
    조합 = 순서 상관없이 r개 선택 3가지 경우 [1, 2][1, 3][2, 3] => [1, 2]나 [2, 1]을 똑같이 보는 것
  • 4개에서 3개를 택하는 경우의 수
    {1, 2, 3, 4}
    순열의 경우 24가지 경우


    조합의 경우 4가지 경우


    순열과 조합


    {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 / r! == n! / r!(n-r)! (단 0 < r <= n)
  • 실습1
    다음 조합의 값을 구해보자.


    8C3
    → 8P3 / 3!
    또는 8! / 3!(8-3)!


    7C5
    → 7P5 / 5!
    또는 7! / 3!(7-5)!
  • 실습2
    '카드 5장 중 2장을 선택했을 때 삼각형과 사각형이 동시에 선택될 수 있는 확률은?'


    5C2
    →5! / 2!(5-2)!

조합(파이썬)

  • 파이썬을 이용해서 다음 조합들의 값을 구하는 프로그램을 만들어 보자.


    8C3
    7C5
numN = int(input('numN 입력 : '))
numR = int(input('numR 입력 : '))
resultP = 1 # 순열
resultR = 1 # R!를 담을 변수
resultC = 1 # 최종값을 구할 변수

# 순열 구하는 부분
for n in range(numN, (numN - numR), -1):    # 원래 포문에 -1붙으므로 numR에 따로 안해줌
    print('n : {}'.format(n))
    resultP = resultP * n
print('resultP : {}'.format(resultP))


# 분모 r 구하는 부분
for n in range(numR, 0, -1):    # 0을 입력해야 0이전의 1까지 실행된다
    print('n : {}'.format(n))
    resultR = resultR * n
print('resultR : {}'.format(resultR))


# 순열을 r!로 나누는 부분
resultC = int(resultP / resultR)
print('resultC : {}'.format(resultC))

# 아래 실습 해답
result = (1/resultC) * 100
print('{}%'.format(round(result, 2)))
  • 카드 5장 중 2장을 선택했을 때 삼각형과 사각형이 동시에 선택될 수 있는 확률은?


    위 코드를 그대로 사용하면 된다
    5C2

확률

  • 모든 사건에서 특정 사건이 일어날 수 있는 수를 나타낸 것.


    [동전]
    ㆍ모든 사건 : 앞, 뒤 → 2가지 경우
    ㆍ특정 사건 : 앞 → 1가지 경우 , 뒤 → 1가지 경우
    ㆍ확률 : 앞 → 1/2, 뒤 → 1/2


    [주사위]
    ㆍ모든 사건 : 1, 2, 3, 4, 5, 6 → 6가지 경우
    ㆍ특정 사건 : 1 → 1가지 경우 , 2 → 1가지 경우, 3 → 1가지 경우, 4 → 1가지 경우, ...
    ㆍ확률 : 1 → 1/6, 2 → 1/6, 3 → 1/6, 4 → 1/6, 5 → 1/6, 6 → 1/6


    ★ 모든 사건 → 표본 공간
    ★ 특정 사건 → 사건
  • 확률과 조합


    조합을 이용해서 확률을 알아낼 수 있다.


    [뽑기]
    박스에 '꽝'이 적힌 종이가 4장 있고, '선물'이 적힌 종이가 3장 있다.
    3장을 뽑을 경우 다음 경우의 수를 구해보자.
    [꽝][꽝][꽝][꽝][선물][선물][선물]


    7장에서 3장을 뽑는 경우 7C3 = 35


    꽝:0 선물:3 → (1)/35 # 선물이 총3개이므로 선물 3개를 뽑는 경우는 한 가지 따라서 1/35
    꽝:1 선물:2 → (4C1 3C2) → (43)/35 → 12/35
    꽝:2 선물:1 → (4C2 3C1) → (63)/35 → 18/35
    꽝:3 선물:3 → (4C3)/35 → 4/35
  • 박스에 '꽝'이 적힌 종이가 5장 있고, '선물'이 적힌 종이가 2장 있다.
    3장을 뽑을 경우 다음 경우의 수를 구해보자.
    [꽝][꽝][꽝][꽝][꽝][선물][선물]


    꽝:3 선물:0 → (5C3)/35 → (10)/35
    꽝:2 선물:1 → (5C2 2C1) / 35 → (102)/35 → 20/35
    꽝:1 선물:2 → (5C1)/35 → (5)/35 → 5/35

확률(파이썬)


이 글은 제로베이스 데이터 취업 스쿨의 강의자료 일부를 발췌하여 작성되었습니다.

profile
안녕하세요 반갑습니다^^

0개의 댓글