[python] 0이상 1미만의 난수 생성하기, np.random.rand()

코딩/python|2020. 7. 10. 08:23

728x90

위키백과에 의하면 난수란 정의된 범위 내에서 무작위로 추출된 숫자를 의미합니다. 오늘은 파이썬에서 0과 1사이의 난수를 생성하려면 어떻게 해야하는지에 대해서 살펴보도록 하겠습니다. 

 

numpy 패키지 내의 random 모듈의 rand 함수를 활용하면 0이상 1미만, 조금 유식하게 표현하면 [0, 1)의 난수를 생성할 수 있습니다. 사용법은 간단합니다. 예를 들어, np.random.rand(2, 5)를 입력하면 0이상 1미만의 난수들을 요소로 하는 2 x 5 배열을 생성해줍니다. 

 

 

모두 0이상 1미만의 어떤 값을 갖고 있는 것을 확인하실 수 있습니다. 20 x 1 형태의 배열을 생성하고 싶다면, np.randmo.rand(20, 1)을 입력해주면 됩니다. 

 

 

NumPy의 공식 문서를 보면, rand 함수는 균등 분포(uniform distribution)인 난수를 생성한다고 합니다. 균등 분포라는 의미는 모든 숫자가 나올 확률이 동등하다는 것입니다. 0.15이 나올 확률이나 0.24가 나올 확률이 모두 같다는 뜻이죠.

 

균등분포

 

조금 응용하면 0이상 1미만의 실수인 난수 뿐 아니라, 1이상 10이하의 정수 난수도 생성할 수 있습니다. 앞에 10을 곱해준 다음에 반올림 처리를 하면 됩니다. 왜냐하면 rand 함수는 0이상 1미만의 숫자를 생성하기 때문에 10을 곱하면 [0, 10)이 되므로, 반올림하면 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 중의 하나의 정수가 나옵니다.