728x90
반응형
오늘은 파이썬에서 난수를 출력하는 법에 대해서 알아볼게요. 최근 random 값을 사용해서 프로그램 작성할 일이 많아서, 정리를 쫙해둬야겠어요.
우선, 파이썬에서 random을 사용하려면, import random 을 해주고,
(rand, randn, randint)는 numpy와 관련 있어서, import numpy as np를 해주시면 됩니다.
* random.random()
: 0부터 1 사이에서 균일한 확률 분포로 실수 난수를 생성
import random
a_1 = random.random()
print("a_1 : ", a_1)
a_2 = random.random()
print("a_2 : ", a_2)
random.random()을 사용하게 되면, 실행할 때마다 다른 값을 출력합니다.
프로그래밍할 때 랜덤 한 값을 생성하고, 그 값을 프로그램 실행 도중에 계속 사용해야 할 경우도 있습니다.
그때, 사용하는 것이 seed입니다.
seed는 암호학에서 hash의 입력을 말할 때도 말하는데, 비슷한 개념이에요.
* seed()
import random
r_1 = 1
random.seed(r_1)
b_1 = random.random()
random.seed(r_1)
b_2 = random.random()
r_2 = 2
random.seed(r_2)
b_3 = random.random()
print("b_1 : ", b_1)
print("b_2 : ", b_2)
print("b_3 : ", b_3)
소스 코드를 보면, r_1과 r_2 두 개의 seed값을 사용하고 있습니다.
b_1과 b_2는 동일한 seed를 사용하고 있고, b_3는 다른 seed값을 사용하고 있습니다. 결과를 확인해보면,
b_3만 다른 값인걸 알 수 있습니다.
* random.sample(range(p, q), r)
앞에서는 범위를 지정하지 않고, 랜덤 한 값 하나를 출력했다면, 이제는 범위, 개수를 지정하고 겹치지 않게 랜덤 한 값을 출력받는 법을 알아보겠습니다.
p부터 q-1까지 r 개의 겹치지 않는 랜덤 한 값을 출력합니다.
중복되지 않게 값을 출력받는 방법엔 여러 가지 있지만, sample을 사용하는 게 제일 편하고, 깔끔해서 자주 사용한답니다.
* random.shuffle()
이번엔, 배열의 원소를 섞어주는 shuffle 함수에 대해서 알아볼게요.
import random
start_list = list(range(0, 7, 1))
print("Before Shuffle : ", start_list)
random.shuffle(start_list)
print("After Shuffle : ", start_list)
이제는 numpy를 사용하면서, 난수를 활용해볼게요.
(numpy는 파이썬에서 다차원 배열을 처리하는데 필요한 여러 유용한 기능을 제공하는 라이브러리입니다.)
* np.random.rand()
0부터 1 사이에서 균일한 확률 분포로 실수 난수를 생성합니다. (random.random()과 동일해요.)
* np.random.rand(p)
0부터 1사이 균일 분포 난수 n개 배열 생성
* np.random.rand(p, q)
0부터 1사이 균일 분포 난수를 matrix array(p, q)로 생성
* np.random.randn()
randn은 기댓값이 0이고, 표준편차가 1인 가우시안 표준 정규 분포를 따르는 난수를 생성합니다.
좀 더 쉽게 설명하기 위해서, matplotlib.pyplot를 사용해서 총 1000개의 난수 분포도를 출력해보았습니다.
가우시안 분포는 자연 데이터처럼 종 모양의 분포도를 가지는 것을 의미합니다.
* np.random.randint()
앞에서는 거의 소수점 형태의 랜덤 한 값을 출력했는데, 이제는 정수 난수를 출력해보겠습니다.
(randint()는 매개변수를 항상 주어야 합니다)
* np.random.randint(n)
0부터 n-1까지 랜덤 한 정수 1개 출력
* np.random.randint(n, m)
n부터 m-1까지 랜덤 한 정수 1개 출력
* 응용 (np.random.randint(n, size = m))
0부터 n - 1까지 랜덤 한 값을 m 길이만큼 출력합니다.
이거 만큼 편한 게 없어요 ㅜ
bit 단위의 랜덤 한 값이 필요할 때 사용하면 아주 좋습니다.
* 응용 (seed 사용)
np.random.seed(r)
np.random.randint(n, size = m)
앞에서 설명한 seed를 randint에 사용한 것입니다.
이렇게 해서 파이썬의 random 함수에 대해서 정리해보았습니다.!
'Python > Python Basic' 카테고리의 다른 글
any(), all() 함수 사용하기 - 공부하는 도비 (1) | 2021.07.21 |
---|---|
파이썬 2진수, 8진수, 10진수, 16진수 변환 (내장함수, format함수) - 공부하는 도비 (2) | 2021.07.21 |
파이썬 합 구하기 (재귀 함수, 합 공식, 반복문) - 공부하는 도비 (0) | 2021.02.27 |
파이썬 문자열 치환, 리스트 치환 replace 사용법 - 공부하는 도비 (0) | 2021.02.03 |
파이썬 SQLite Database Browser 파이썬 연동 및 DB 생성 - 공부하는 도비 (0) | 2021.01.18 |