I need to generate large(1 Million) number of random numbers from a uniform distribution. I did some experiments generating 60K random number from uniform distribution over [0-999] using
scipy.stats.randint(0,1000).rvs(60000)
and it took ~0.6s. Then I tried same thing using boost library
boost::random::uniform_int_distribution
and it took ~0.25s. So my question is this- Are there better ways of doing what I want to do using python(libraries)? Any suggestions are greatly appreciated. Thanks.
解决方案
Use numpy.random.randint:
numpy.random.randint(low=1, high=1001, size=60000)
On my trials, this runs about 300 times faster than scipy.stats.randint, which is part of a system designed more for generality than speed. (Also, scipy.stats.randint(0,1000).rvs(60000) is generating integers from 0 to 999, not 1 to 1000.)