파이썬 랜덤 라이브러리
2017/05/25
참고:
파이썬으로 주사위 굴리기 포스트를 쓴 김에 랜덤 모듈 함수를 정리하고 싶어졌다. 앞 포스트에서 활용해 본 함수는 다음과 같다.
random.random()
random.randint()
random.choice()
random.randint()
함수는 두 번째 인자도 포함되기에 일반적인 파이썬 관습과는 다르다고 했는데,
그래서 이 함수가 마땅치 않다면 random.randrange()
를 쓰면 된다.
random.randrange()
는 1~3개의 인자를 받을 수 있다. range()
오브젝트와 인자를 받는 방식이 거의 유사하다.
random.randrange(start, end, step)
이다.
import random
a = random.randrange(1, 7)
b = random.randrange(1, 10, 2)
print(a) #=> 1~6 사이에 있는 6개의 정수 중 무작위로 추출된 한 개의 정수 출력.
print(b) #=> 1, 3, 5, 7, 9 중 무작위로 추출된 한 개의 수 출력.
random.sample()
함수는 인자로 주어진 시퀀스 중 일부를 무작위 추출, 리턴한다.
random.choice()
와 비슷하지만, 추출 개수를 지정할 수 있다. 아니, 지정해야만 한다. 지정하지 않으면 인자가 부족해 TypeError
가 발생한다.
그리고 리턴 값은 리스트로 리턴된다. 1개를 추출하더라도 리스트에 담아 리턴한다.
import random
dice = [1,2,3,4,5,6]
b = random.sample(dice, 2)
print(b)
#=>dice 리스트에 포함된 숫자 중 두 개가 임의로 추출.
random.sample()
함수는 특히 수많은 샘플 중에서 일부 표본을 추출할 때 유용하다.
이때 range()
오브젝트를 인자로 넘기면, 메모리도 절약되고 속도도 향상된다.
import random
xlist = random.sample(range(10000), 10)
print(xlist)
#=>0~9999 중 10개의 정수가 임의로 추출.
random.shuffle()
은 인자로 주어진 시퀀스를 셔플한다. 단, 리턴값이 없고 기존 시퀀스를 변화시키니 주의해야 한다.
import random
dice = [1,2,3,4,5,6]
random.shuffle(dice)
print(dice)
#=>dice 리스트가 셔플된 채 출력된다.