2017-09-27 3 views
1

균일 한 분포에서 큰 (1 백만) 개의 난수를 생성해야합니다. 나는 uniform 배포 python에서 임의의 숫자를 생성하는 가장 빠른 방법

scipy.stats.randint(0,1000).rvs(60000) 

를 사용 [0-999]에 걸쳐 균일 분배에서 60K 난수를 생성하는 몇 가지 실험을했고, 그것은 ~ 0.6s했다. 그럼 난 부스트 라이브러리

boost::random::uniform_int_distribution

를 사용하여 같은 일을 시도하고 ~ 0.25s했다. 그래서 내 질문은 이것입니다 - 파이썬 (라이브러리)를 사용하여 내가하고 싶은 일을 더 나은 방법이 있습니까? 어떤 제안이라도 대단히 감사하겠습니다. 감사.

답변

3

사용 numpy.random.randint : 내 임상 시험에

numpy.random.randint(low=1, high=1001, size=60000) 

,이 속도보다 일반성에 대한 더 많은 설계된 시스템의 일부인 약 300 배 빠른 scipy.stats.randint 이상 실행됩니다. (scipy.stats.randint(0,1000).rvs(60000)은 0에서 999까지 1에서 1000이 아닌 정수를 생성합니다.)

3

numpy.random.randint이 상당히 빠릅니다.

%timeit scipy.stats.randint(0,1000).rvs(60000) 
59.6 ms ± 956 µs per loop (mean ± std. dev. of 7 runs, 10 loops each) 

%timeit np.random.randint(0, 1000, 60000) 
202 µs ± 1.67 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)