랜덤 함수를 사용할 때마다 다시 찾아봐야해서 정리를 해두려 합니다.
제공하는 함수가 워낙 많아서 그 중에서 자주 사용하는 함수 몇 개만 추리겠습니다. 랜덤함수에 대해 좀 더 공부하고 싶으신 분은 help(random)을 통해 도움말을 보거나,
random 공식 문서를 확인하시면 좋을 것 같습니다.
1. choice( seq)
import random
random.choice([1, 2, 3, 4]) # 1, 2, 3, 4 중 하나의 원소를 선택
choice 함수는 iterable객체가 주어지는 경우, 그 중에 하나를 랜덤으로 선택해주는 함수입니다.
2. gauss(mu, sigma)
from collections import Counter
result = []
for _ in range(10_000):
result.append(random.gauss(0, 1))
result.sort()
result = list(map(lambda x: round(x, 3), result))
c = Counter(result)
plt.figure(figsize=(12, 8), dpi=300)
plt.bar(c.keys(), c.values(), 0.1)
gauss함수는 X ~ N(mu, sigma)를 따르는 확률변수를 생성하고 확률값 하나를 반환합니다. mu와 sigma가 default값이 정해져 있지 않으므로 반드시 인자값을 전달해 주어야 합니다.
동일하게 정규분포 확률값을 생성하는 random.normalvariate보다 좀 더 빠릅니다.
하지만 멀티 쓰레드 환경에서 사용하는 경우, 동일한 반환값을 가지기 때문에 1) 서로 다른 인스턴스를 생성하거나 2) random.normalvariate 함수를 사용해야 합니다.
3. normalvariate(mu, sigma)
random.gauss 함수와 동일한 기능을 갖습니다. normalvariate함수는 random.gauss 함수보다 속도가 느리지만 멀티 쓰레딩 환경에서의 문제가 없다는 장점이 있습니다.
4. randint(a, b)
a ~ b 사이의 값을 가지는 정수값을 반환합니다. 이 때, 양 끝 a와 b도 범위에 포함됩니다.
result = []
for _ in range(10):
result.append(random.randint(1, 3))
result
5. random()
[0, 1) 범위 안에서 랜덤한 난수값 하나를 반환합니다. 0은 포함되지만 1은 포함되지 않습니다.
print(random.random()) # [0, 1) 범위의 난수를 반환
6. randrange(start, stop=None, step=1)
result = []
for _ in range(100):
result.append(randrange(1, 6, 2))
print(result)
randrange함수는 start부터 stop 범위 내에 해당하는 난수값 하나를 반환합니다.
step 인자를 받는 경우, range함수와 동일하게 step 간격을 가지는 난수를 생성합니다.
stop은 범위에 포함되지 않습니다.
하나의 인자만 받는 경우, 인자를 stop으로 받고 stop 미만의 수들 중 하나의 난수를 반환합니다.
result = []
for _ in range(10):
result.append(randrange(3))
print(result)
7. seed(a=None, version=2)
random을 사용해 난수를 생성하면 항상 다른 값이 나옵니다. 하지만 실험을 반복하는 경우, 계속해서 다른 결과가 나오면 실험의 결과가 맞는지 확인하기 어렵습니다. random.seed 함수는 동일한 seed값을 넣고 난수값을 구하는 경우 항상 동일한 난수값을 반환하도록 만들어줍니다.
random.seed(100)
print(random.gauss(0, 1))
random.seed(100)
print(random.gauss(0, 1))
8. shuffle(x, random=None)
nums = [num for num in range(1, 11)]
print(nums)
random.shuffle(nums)
print(nums)
random.shuffle(nums)
print(nums)
shuffle 함수는 리스트가 주어지면 리스트의 순서를 섞어버립니다.
9. uniform(a, b)
print(random.uniform(0, 1)) # [0, 1) 범위에 해당하는 난수를 반환
uniform 함수는 [0, 1) 범위에 해당하는 난수를 반환합니다. 이 때, b값은 범위에 포함되지 않습니다.
이름에서 알 수 있듯이, 모든 수들은 동일한 확률로 추출됩니다.
'Python > Syntax' 카테고리의 다른 글
[JupyterNoteBook] 사용자 정의 ipynb 파일 임포트 (다른 ipynb 파일 임포트) (0) | 2022.07.29 |
---|---|
[Numpy] ndarray 합치기 (c_, r_, column_stack) (0) | 2022.07.29 |
[Python] slice 클래스 (0) | 2022.07.16 |
[Pandas] 행에서 문자열, 값의 검색 (0) | 2022.07.15 |
[Pandas] 데이터 프레임 인덱스 초기화 (0) | 2022.07.15 |