본문 바로가기
컴퓨터 언어/Python

[Python 3] random 모듈 (random, uniform , randint , randrange , choice , sample , shuffle)

by SuperMemi 2020. 3. 10.
반응형

random 모듈

 

random는 난수를 발생 시키는 모듈이다. 모듈에는 여러 함수가 존재한다.

 

모듈 임포트

>>> import random

 

random() 함수

0.0에서 1.0 사이의 실수 중에서 난수값을 리턴

0.0 <= 리턴값 < 1.0

 

>>> random.random()
0.5176390829958308

 

 

uniform(a, b) 함수

괄호 안 두 수 사이의 실수 중에서 난수값을 리턴

a <= 실수 <= b

>>> random.uniform(10, 30)
25.770721429933218
>>> random.uniform(100, 200)
189.58393737567013

 

randint(a, b) 함수

괄호 안 두 수 사이의 정수 중에서 난수값을 리턴

a <= N <= b

>>> random.randint(1, 5)
3
>>> random.randint(100, 200)
125

 

randrange(start, stop, step) 함수

range(start, stop, step) 함수로 만들어지는 정수 중 난수값을 리턴

start <= 리턴값 < stop

>>> list(range(1, 15, 2))
[1, 3, 5, 7, 9, 11, 13]
>>> random.randrange(1, 15, 2)
9

>>> list(range(15, 35, 4))
[15, 19, 23, 27, 31]
>>> random.randrange(15, 35, 4)
19

 

random.choice(seq) 함수

매개변수로 시퀀스 타입(문자열, 튜플, 리스트)을 받음. 그중에서 무작위로 하나를 선택하여 리턴

>>> data = [1,2,3,4,5,6,7]
>>> random.choice(data)
3

>>> data = ['apple', 'banana', 'grape', 'orange']
>>> random.choice(data)
'orange'

>>> data = ['apple']
>>> random.choice(data)
'apple'

>>> random.choice('apple')
'p'
>>> random.choice('12345')
'1'

 

sample(seq or set, 뽑을 개수) 함수

입력으로 받은 시퀀스 타입(문자열, 튜플, 리스트) 또는 세트 타입 데이터에서 정한 개수만큼 무작위로 뽑아 리턴

>>> data = [1, 2, 3, 4, 'apple', 'banna']

>>> random.sample(data, 3)
[3, 'banna', 1]

>>> random.sample(data, 3)
[4, 3, 2]

>>> random.sample(data, 5)
['banna', 1, 2, 3, 'apple']

 

shuffle(리스트 타입) 함수

입력으로 받은 데이터 순서를 무작위로 바꿈. 

변형 가능해야 하기 때문에 리스트만 가능. (튜플, range, 문자열 불가능)

다만, list() 로 바꾼다면 사용가능.

# 리스트 -> shuffle

>>> x = [1,2,3,4,5,6]
>>> random.shuffle(x)
>>> print(x)
[1, 2, 6, 3, 4, 5]


# 튜플 -> 오류

>>> x = (1,2,3,4,5)
>>> random.shuffle(x)
TypeError: 'tuple' object does not support item assignment


# range(a,b) -> 오류

>>> x = range(1, 10)
>>> random.shuffle(x)
TypeError: 'range' object does not support item assignment


# 문자열 -> 오류

>>> x = 'star'
>>> random.shuffle(x)
TypeError: 'str' object does not support item assignment


# 문자열 -> 리스트 변형 후 shuffle 가능

>>> x = 'star'
>>> y = list(x)
>>> random.shuffle(y)
>>> print(y)
['t', 's', 'a', 'r']
반응형