random 모듈
- 다양한 분포에 대한 난수를 생성해주는 모듈입니다.
random 모듈을 사용할 때는 import random 을 입력하여 사용하며
random 모듈 안의 여러가지 기능 (함수, 변수)을 사용할때는 random.() 형식으로 입력하여 사용합니다.
정수 함수
random.randrange()
- 정해준 범위 내에서 무작위 정수를 반환해주는 함수.
지정해준 범위 마지막 숫자는 출력하지 않음.
● randrange(start, end, step)
>>> import random
>>> random.randrange(-100,100,2)
-46
>>> random.randrange(-100,100,2)
39
### ( -100 ≤ x < 100 ) 범위의 정수 중 홀수만 랜덤으로 출력.
● randrange(end)
>>> import random
>>> random.randrange(10)
5
### ( 0 ≤ x < 10 ) 범위의 정수 중 랜덤으로 출력
random.randint()
- randrange() 함수와 마찬가지로 정해진 범위내에서 무작위 정수를 반환해주는 함수.
randrange() 함수와는 다르게 범위 마지막 숫자도 포함해줌.
● randint(start, end)
>>> import random
>>> random.randint(-100, 100)
77
### ( -100 ≤ x ≤ 100 ) 범위의 정수 중 랜덤으로 출력.
시퀀스 함수
random.choice()
- 시퀀스 타입(리스트, 튜플, 문자열)을 매개변수로 받아 시퀀스 타입 안의 데이터를 무작위로 하나 반환해주는 함수.
시퀀스 타입안에 데이터가 한개도 없을 시, IndexError 발생.
● choice(seq)
>>> a = [1,2,3,4,5]
>>> b = (1,2,3,4,5)
>>> c = 'abcde'
>>> d = []
>>> random.choice(a)
3
>>> random.choice(b)
2
>>> random.choice(c)
'd'
>>> random.choice(d)
IndexError: list index out of range
random.choices()
- 시퀀스 타입(리스트, 튜플, 문자열)을 매개변수로 받아 시퀀스 타입 안의 데이터를 무작위로 반환해주는 함수.
choice() 함수와는 다르게 k 옵션을 사용하여 여러개의 데이터를 호출 할 수 있으며( 중복 가능 ),
weights 옵션을 사용하여 어떤 객체에게 더 많은 가중치를 두어 랜덤으로 호출 할 것인지 정할 수 있습니다.
결과값을 리스트 형식으로 반환.
● choices(seq, weights, k)
※ seq : 리스트,튜플,문자열,range 와 같은 자료형 타입.
※ weights : 시퀀스 자료형 안에서 어떤 데이터에게 가중치를 둘 것 인지 정하는 옵션.
※ k : 몇개의 데이터를 호출할 것 인지 (중복 가능.)
>>> import random
>>> a = [1,2,3,4,5]
>>> random.choices(a, weights=[10,1,1,1,1], k=10)
[1, 3, 1, 1, 1, 1, 1, 1, 5, 1]
random.shuffle()
- 시퀀스 타입(리스트) 을 매개변수로 받아 시퀀스 타입 안의 데이터를 무작위로 섞어 반환해주는 함수.
매개변수 중에서 리스트만 가능하며, 문자열이나 튜플, range 형식은 불가능.
shuffle 함수를 사용하게 되면 본래의 변수가 바뀌게 됩니다.
● shuffle(list)
>>> import random
>>> a = [1,2,3,4,5]
>>> random.shuffle(a)
>>> print(a)
[4, 2, 5, 3, 1]
random.sample()
- 시퀀스 타입(리스트, 튜플, 문자열, range() ) 을 매개변수로 받아 시퀀스 타입 안의 데이터를 무작위로 섞어 반환해주는 함수.
shuffle() 함수와는 다르게 k 매개변수가 반드시 들어가야 하며, k로 반환 받을 리스트의 길이를 정해줄 수 있습니다.
결과값은 리스트로 반환해줍니다.
또한, 기존의 변수가 변하지않습니다.
※ k 옵션으로 지정해주는 결과값의 크기가 기존 시퀀스의 크기보다 크면 안됨.
● sample(seq, k)
>>> import random
>>> a = [1,2,3,4,5]
>>> b = 'abcde'
>>> random.sample(a, k = 3)
[2, 1, 4]
>>> random.sample(b, k = 4)
['d', 'c', 'e', 'a']
실수 함수
random.random()
- 0.0 ≤ x < 1.0 범위 내에 있는 소수 중에서 하나를 무작위로 추출해주는 함수.
● random.random()
>>> import random
>>> random.random()
0.7319589730332557
random.uniform()
- random() 함수와는 다르게 두 수를 입력받아 두 수 사이 범위내에 있는 실수를 무작위로 추출해주는 함수.
● random.uniform(a, b)
a ≤ b 일 경우, a ≤ x ≤ b
b < a 일 경우, b ≤ x ≤ a
>>> import random
>>> random.uniform(1.5, 5.5)
4.162513631617844
>>> random.uniform(10.5, 5.5)
5.878904048936564
>>> random.uniform(5.0, 5.0)
5.0
random.seed()
- random 모듈을 사용하여 난수를 생성할때, 무작위로 생성되는 난수를 고정해주는 역할을 한다.
seed() 괄호 안에 임의의 숫자를 넣은 다음, 난수 생성 함수를 쓰게되면 해당 임의의 숫자에 난수가 저장됩니다.
기본구조
● random.seed(n)
>>> import.random
>>> random.seed(10)
>>> random.uniform(1.0, 5.0)
3.285610378759654
### seed(100)에 uniform(1,0, 5.0) 함수 값 저장.
>>> random.uniform(1.0, 5.0)
2.7155562187004585
### seed(100) 불러오지 않아서 저장되지 않은 난수 호충됨.
>>> random.seed(10)
>>> random.uniform(1.0, 5.0)
3.285610378759654
### 다시 seed(100)에 저장된 난수 호출.
'Coding > Python' 카테고리의 다른 글
[python] class (0) | 2021.12.29 |
---|---|
[python] 입출력 / 파일 읽고 쓰기 (0) | 2021.12.02 |
[python] 함수 란? (0) | 2021.12.01 |
[python] for 문 / ( range, enumerate, zip 함수 ) (0) | 2021.12.01 |
[python] while 문 ( break, continue ) (0) | 2021.11.26 |