Week2-9 | Probability.py

Seongeun·2023년 6월 22일

week2

목록 보기
9/9
post-thumbnail

Week2-9. Probability(확률)

  • Factorial(팩토리얼): n!, n과 n보다 작은 모든 자연수의 곱이다.
 #예제: 사용자가 입력한 숫자의 팩토리얼을 출력하는 코드

 #for
 userNum = int(input('Number : '))
 
 result = 1 #곱셈이므로 초기값을 0이 아닌 1로 설정한다.
 n = 1

 for i in range(1, userNum + 1):
    result *= i

 print('{}! = {}'.format(userNum,result))


 
 #while
 userNum = int(input('Number : '))

 result = 1 #곱셈이므로 초기값을 0이 아닌 1로 설정한다.
 n = 1

 while n <= userNum:
     result *= n
     n += 1

 print('{}! = {}'.format(userNum,result))


 
 #재귀함수(recursion):정의 단계에서 자신을 호출하는 함수
 def factorial(n):
     if n == 0 or n == 1 :
         return 1

     return n * factorial(n-1)  #factorial(n-1)호출

 print(factorial(4))


 
 #math.factorial
 import math

 userNum= int(input('Number : '))


 print('{}! = {}'.format(userNum,math.factorial(userNum)))
  • Permutation(순열): n개 중 서로 다른 r개를 뽑아 순서대로 나열하는 연산이다.
 #예제1: 9P4 코드

 n = int(input('n : '))
 r = int(input('r : '))

 perm = 1

 for i in range(n, (n - r), -1):
     perm *= i

 print('{}P{} : {}'.format(n,r,perm))



 #예제2: 카드 7장을 나열하되, 2,4,7번 카드가 서로 이웃하도록 나열하는 경우의 수 출력 코드

 total = int(input('Total : '))
 neighbor = int(input('Neighbor : '))

 perm = 1
 factorial = 1

 for i in range(total - neighbor + 1, 0, -1):  # 1,(2,4,7),3,5,6 나열하는 경우의 수
    perm *= i

 for j in range(1, neighbor+1):                #2,4,7끼리의 자리변동 경우의 수
    factorial *= j

 result = perm * factorial
 print('Case : {}'.format(result))
  • Combination(조합): n개 중 r개를 선택하는 경우의 수이다.
 #예제: 9C4를 출력하는 코드

 n = int(input('n : '))
 r = int(input('r : '))

 perm = 1
 factorial = 1

 for i in range(n, n-r, -1):
     perm *= i
 
 for j in range(1, r+1):
     factorial *= j

 combination = perm / factorial

 print('{}C{} : {}'.format(n,r,combination))
  • Probability(확률): 어떤 사건이 일어날 가능성의 수치적 표현이다.
 #예제:'Unlucky'6장, 'Lucky'4장, 총 10장 중 6장을 뽑을 때, 'Unlucky'3장, 'Lucky'3장을 뽑을 확률을 출력하는 코드

 # nCr
 def combination(n, r):
     perm = 1
     factorial = 1

     for i in range(n, (n - r), -1):
         perm *= i

     for j in range(1, r + 1):
         factorial *= j


     return perm / factorial


 #10C6

 unlucky = int(input('unluky : '))
 lucky = int(input('lucky : '))

 total = unlucky + lucky
 totalChosen = int(input('Number of chosen cards : '))

 combination(total,totalChosen)

 print('-'*10)

 #6C3

 unluckyChosen = int(input('Number of chosen unlucky cards : '))

 combination(unlucky,unluckyChosen)

 #4C3

 luckyChosen = int(input('Number of chosen lucky cards : '))

 combination(lucky,luckyChosen)

 print('-'*10)

 probability = combination(unlucky,unluckyChosen) * combination(lucky,luckyChosen) / combination(total,totalChosen)
 print('Probability : {}'.format(round(probability,2)))

0개의 댓글