Python 팩토리얼, 군 수열, 순열, 조합, 확률

dumbbelldore·2024년 11월 10일
0

zero-base 33기

목록 보기
19/97

1. 팩토리얼

  • 1부터 양의 정수 nn까지의 정수를 모두 곱하는 것 (단, 0!0! = 1로 약속한다.)
  • 4!=1×2×3×4=244! = 1 \times 2 \times 3 \times 4 = 24
input = int(input("계산하고자 하는 숫자를 입력하세요: "))

cum_val = 1

for i in range(input):
    cum_val *= (i+1)

print(f"{input}! = {cum_val}")

# 출력결과
# 계산하고자 하는 숫자를 입력하세요: 4
# 4! = 24

2. 군 수열

  • 여러 개의 항을 묶었을 때 규칙성을 갖는 수열
  • {1,1,2,1,2,3,1,2,3,4}\{1, 1, 2, 1, 2, 3, 1, 2, 3, 4\}의 수열은 {(1),(1,2),(1,2,3),(1,2,3,4)}\{(1), (1, 2), (1, 2, 3), (1, 2, 3, 4)\}로 묶을 수 있음
  • {1,1,2,1,2,3,1,2,3,4}\{1, 1, 2, 1, 2, 3, 1, 2, 3, 4\}의 수열을 확장하여, 11번째 항의 값을 출력하는 프로그램
seq_list = list()
seq = list()
n_degree = 11
counter = 1

while len(seq_list) <= n_degree:
    seq = list(range(1, counter+1))
    seq_list.extend(seq)
    counter += 1

print("군수열:", seq_list)
print(f"{n_degree}번째 값: {seq_list[-1]}")

# 출력결과
# 군수열: [1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5]
# 11번째 값: 5

3. 순열(Permutation)

  • nn개 중 rr개를 택하여 나열하는 경우의 수 = nPr_{n}P_{r} = n!(nr)!\frac{n!}{(n-r)!}
  • 순서가 중요하므로, (A, B)와 (B, A)는 서로 다른 경우의 수에 해당
# 8P3을 계산하는 프로그램
n = 8
r = 3

nom = 1
denom = 1

for i in range(n):
    nom *= (i+1)

for j in range(n-r):
    denom *= (j+1)
    
res = nom / denom
print(f"{n}P{r} = {res}") # 8P3 = 336

4. 조합(Combination)

  • nn개 중 rr개를 택하는 경우의 수 = nCr_{n}C_{r} = nPrr!\frac{_{n}P_{r}}{r!} = n!(nr)!r!\frac{n!}{(n-r)!r!}
  • 순서를 무시하며, (A, B)와 (B, A)는 중복된 경우의 수로 간주
# 8C3을 계산하는 프로그램
n = 8
r = 3

nom = 1
denom = 1

for i in range(n):
    nom *= (i + 1)

for j in range(n - r):
    denom *= (j + 1)

for k in range(r):
    denom *= (k + 1)

res = nom / denom
print(f"{n}P{r} = {res}")  # 8C3 = 56

5. 확률(Probability)

  • 모든 사건 중 특정 사건이 일어날 수 있는 수의 비율를 나타낸 것
  • 순서가 중요하지 않은 경우, 모든 사건과 특정 사건은 조합(Combination)을 사용하여 나타낼 수 있음
  • 박스에 '꽝'이 적힌 종이가 4장, '당첨'이 적힌 종이가 3장이 있는 경우에 '꽝'과 '당첨'을 각각 2장, 1장으로 뽑을 확률
    - 모든 사건(분모): 7C3_{7}C_{3} = 35
    - 특정 사건(분자): 4C2×3C1_{4}C_{2} \times _{3}C_{1} = 18
    - 확률: 18/35

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

profile
데이터 분석, 데이터 사이언스 학습 저장소

0개의 댓글