코딩을 하다 보면 random값이 필요할 때가 있습니다. 무작위로 뽑는다는 것은 통계에서 아주 중요한 의미를 가지고 있습니다. 특정 변수와 상관관계가 없기 때문에, sample을 뽑거나 테스트를 할 때도 유용하게 쓰입니다. 그래도 다른 모듈보다 가끔 사용하다 보니 잘 기억이 나지 않습니다. 오늘은 파이썬 랜덤함수 사용, random 모듈 사용법에 대해서 알아보겠습니다.

 

 

1. 파이썬 random 모듈 설치?

random은 파이썬에 내장된 모듈입니다. 별도의 설치 과정 없이 import 해서 사용할 수 있습니다. random에는 랜덤 값을 추출해주는 다양한 함수가 있습니다. 그중에서 가장 많이 사용되는 함수를 정리해 보았습니다.

random 모듈은 import하고 사용해도 되지만, from ~ import ~문을 이용해서 필요한 함수를 직접 지정해서 사용하는 것이 편리합니다.

 

import random
from random import random, randint

 

 

2. 파이썬 random 함수

함수명 내용
random 0과 1사이에 실수를 랜덤하게 추출
randint(a, b) a와 b 사이의 정수를 랜덤하게 추출
(a,b값 포함)
randrange(start, stop=None, step=1) start에서부터 stop까지 값을 추출. step이 간격. stop은 미포함.
uniform a와 b사이의 실수를 랜덤하게 추출
choice 리스트,튜플,문자열,range 등의 객체에서 하나의 값을 선택
choices 리스트,튜플,문자열,range 등의 객체에서 여러 개 복원추출(중복 허용)
sample 리스트,튜플,문자열,range 등의 객체에서 여러 개 비복원추출
(요소를 중복해서 추출하지 않는다)
shuffle 리스트 순서 무작위 변경

 

 

1) random의 대표함수 random

0부터 1까지 중에서 소수점자리의 숫자를 무작위로 추출해줍니다. 함수의 입력 인자로 넣을 수 있는 값은 없습니다.

random.random()

[결과]: 0.3719802302255245

 


2) randint, randrange는 범위안의 숫자를 선택

차이점은 위의 표를 보면 좋겠습니다. randrange의 start와 stop값은 정수만 가능합니다.

random.randint(3, 10)
[결과]: 10

random.randrange(3, 10, 3)
[결과]: 9

 

 

3) 여러 개 값 선택 - choice, choices, sample

choice함수를 이용하면, 단일값을 choices를 사용하면 여러 개의 값을 random으로 추출할 수 있습니다. 아래와 같이 1부터 10까지의 list가 있다고 합시다. choice함수를 이용하면 숫자 하나를 추출할 수 있습니다.

temp = range(1,10)

random.choice(temp)
[결과]: 2

random.choices(temp, k=5)
[결과]: [1, 4, 1, 9, 1]

random.sample(temp, k=5)
[결과]: [8, 9, 2, 1, 7]

 

 

4) numpy의 permutaion도 유용

numpy패키지에도 유용한 random함수가 있습니다. permutaion이라는 함수인데, 입력 인자로 넣은 숫자만큼의 수를 무작위로 생성합니다. 여기에 판다스의 take함수를 같이 사용하면, 데이터 프레임을 무작위로 만들 수 있습니다. 생각해보니 위의 random모듈로도 동일한 작업을 할 수 있겠습니다.

이 방법을 이용해서 train, test셋을 나눌 수 있습니다. 물론 판다스의 train_test_split 함수를 더 자주 사용하게 되기는 합니다.

 

import numpy as np

temp = np.random.permutation(5)
print(temp)
[결과]:
array([0, 3, 2, 4, 1])


import pandas as pd

df = pd.DataFrame({"a":[1,2,3,4,5]})
df.take(temp)

[결과]:

   a
0  1
3  4
2  3
4  5
1  2

 

 

5) 동일한 랜덤값을 뽑고 싶다면

random은 값이 무작위로 바뀌지만, 값이 실행할 때마다 바뀌니 디버깅을 하기 어렵습니다. 이 때는 seed함수를 이용하면 됩니다. random함수 실행 전에 seed값을 지정하면 같은 값이 선택됩니다.

random.seed(1234)
random.random()

[결과]: 0.9664535356921388


random.seed(1234)
random.random()

[결과]: 0.9664535356921388

 

 

오늘은 이렇게 파이썬 랜덤값 생성, random모듈에 대해서 알아보았습니다. random값은 sleep함수에도 사용하는 등  은근히 많이 사용되므로  이번 기회에 잘 익혀두면 좋겠습니다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기