[통계로운 언어, Python] 순열

저번 소개 글을 작성한 지 약 2달이 되었네요..🥺🥺

지금부터는 시간이 허락하는 한 꾸준히 게시하겠습니다!

 

지난 소개글에서도 말씀드렸듯

통계학을 위한 실행법에 초점을 두고, 기본 문법을 생략하려고 합니다.

예를 들어, 자료의 구조와 같은 내용을 생략하고 진행하고자 합니다.

해당 내용은 추후 데이터 분석 카데고리를 추가 개설하여 말씀드리겠습니다.

 

그럼 시작해볼까요?


😊 지난 게시글에서 작성한 정의를 바탕으로 작성되었습니다. 

 

1. 순열(Permutation)

 

(정의)

$ {}_n{\rm P}_r = n(n-1) \cdots (n-r+1) = \cfrac{n!}{(n-r)!} $

(예시)

1부터 5까지 적힌 카드가 각 1장씩, 총 5장 있다고 합시다. 
2개의 카드를 동시에 뽑아 2자리의 숫자를 만드는 경우의 수를 구한다면, ${}_5{\rm P}_2 = \cfrac{5!}{(5-2)!}$ 입니다.

 

 

(1) 정의 식 활용

정의를 활용하면, 팩토리얼 계산이 필요합니다.

팩토리얼 계산을 수행하기 위해 라이브러리를 활용하는 방법과 활용하지 않는 방법 모두 보여드리겠습니다.

 

> 라이브러리 활용(math)

- 함수명 : math

 

📌파이썬에 내장되어있는 math를 활용했습니다.

import math
math.factorial(5)/math.factorial(5-2)

 

결과

 

> 라이브러리 활용하지 않음

n = 5; r = 2
number = [n, n-r]
result = [1, 1]
for itr1 in range(0, len(number)):
    for itr2 in range(1, number[itr1] +1 ):
        result[itr1] *= itr2
result[0] / result[1]

 

📌초기 n과 r의 값을 아래와 같이 입력해도 실행됩니다.

n = int(input("n : "))
r = int(input("r : "))
number = [n, n-r]
result = [1, 1]
for itr1 in range(0, len(number)):
    for itr2 in range(1, number[itr1] +1 ):
        result[itr1] *= itr2
result[0] / result[1]

 

결과

 

 

(2) itertools 라이브러리 활용

- 사용 라이브러리 : itertools
- 함수명 : permutations

 

📌 라이브러리에서 함수명을 불러오는 방법은 "from 라이브러리 import 함수명"입니다.

from itertools import permutations
cards = ['1', '2', '3', '4', '5']
cases = list(permutations(cards, 2))
len(cases)

결과

 

📌 permutations(cards, 2)만 실행한다면, 우리가 얻고자 하는 결과는 살펴보기 어려워요🥺

 


+) 중복 순열(Permutation with repetition)

(정의)

$ {}_n{\prod}_r = n^{r} $

(예시)

1부터 5까지 적힌 카드가 각 1장씩, 총 5장 있다고 합시다. 
한번 뽑은 카드도 다시 제자리에 둔 후 2개의 카드를 뽑습니다.

2자리의 숫자를 만드는 경우의 수를 구한다면, ${}_5{\prod}_2 = 5^{2}$ 입니다.

 

(1) 정의 식 활용

정의를 활용하면, 제곱 계산이 필요합니다.

5**2

📌 파이썬에서 제곱은 ** 기호 입니다.

 

결과

 

 

2) itertools 라이브러리 활용

- 사용 라이브러리 : itertools
- 함수명 : combinations, product

 

from itertools import combinations, product
cards = ['1', '2', '3', '4', '5']
cases = list(product(cards, repeat=2))
len(cases)

결과


😊 이번 포스팅에서는 '순열'을 파이썬으로 실행하는 방법을 살펴보았습니다.

소개해드린 4가지의 방법 모두 같은 결과를 도출할 수 있었습니다!

 

다음 포스팅에서는 '조합'이 이어집니다.

TAGS.

Comments