[기초수학] 순열_조합_확률

·2023년 3월 16일
0

[기초 수학]

목록 보기
3/3
post-thumbnail

✏️순열

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

원순열

  • 시작과 끝의 구분이 없는 순열
circular permutation = n! / n = (n-1)!

✍️실습

import math


def permutation(n, r):
    result = 1
    for i in range(n, n - r, -1):
        result *= i
        print(f'n : {i}')
    print(f'result : {result}')


numN = int(input('numN 입력 : '))
numR = int(input('numN 입력 : '))
permutation(numN, numR)

print(f'permutation : {math.perm(numN, numR)}')

✏️조합

  • n개에서 r개를 택하여 순서에 상관없이 나열하는 경우의 수

✍️실습


def combination(n, r):
    perm = 1
    valR = 1
    for i in range(n, n - r, - 1):
        perm *= i
        valR *= i - (n - r)
        print(f'n : {i}')
        print(f'r : {i - (n - r)}')

    print(f'result P : {perm}')
    print(f'result R : {valR}')
    print(f'result C : {perm // valR}')


numN = int(input('numN 입력 : '))
numR = int(input('numR 입력 : '))
combination(numN, numR)


💡result

numN 입력 : 7
numR 입력 : 5
n : 7
r : 5
n : 6
r : 4
n : 5
r : 3
n : 4
r : 2
n : 3
r : 1
result P : 2520
result R : 120
result C : 21

✏️확률

  • 모든 사건에서 특정 사건이 일어날 수 있는 수를 나타낸 것
  • 모든 사건 : 표본 공간, 샘플
  • 특정 사건 : 이벤트

확률과 조합

  • 조합을 이용해서 확률을 알아낼 수 있다
def combination(n, r):
    perm = 1
    valR = 1
    for i in range(n, n - r, - 1):
        perm *= i
        valR *= i - (n - r)

    comb = perm // valR
    return comb


totalL = int(input('꽝의 수 : '))
totalP = int(input('선물의 수 : '))
n1 = int(input('뽑을 꽝의 수 : '))
n2 = int(input('뽑을 선물의 수 : '))
sample = combination(totalP + totalL, n1 + n2)
event1 = combination(totalL, n1)
event2 = combination(totalP, n2)
probability = round(event1 * event2 * 100 / sample, 2)

print(f'sample : {sample}')
print(f'event1 : {event1}')
print(f'event2 : {event2}')
print(f'probability : {probability}%')

💡result

꽝의 수 : 4
선물의 수 : 3
뽑을 꽝의 수 : 2
뽑을 선물의 수 : 1
sample : 35
event1 : 6
event2 : 3
probability : 51.43%




기초수학을 마치며

기초적인 개념들을 복습했지만 헷갈리는 개념들이 있었다.
특히 계차 수열은 연산하기가 조금 오래걸렸다ㅎ,,
딥러닝, 머신러닝을 하기 위해서는 수학개념은 필수이기 때문에 기초적인 개념은 확실히 알고 넘어가는게 중요하단 생각이 든다.
개념은 파악했으니 문제 풀이하면서 제대로 응용하는 연습을 해야겠다
profile
개발하고싶은사람

0개의 댓글