2017-09-27 17 views
1

一様分布から乱数を生成する必要があります。私は 一様分布からの乱数を生成する最速の方法

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

を使用して [0-999]にわたって均一な分布から60Kの乱数を生成するいくつかの実験を行なったし、それは〜0.6秒を要しました。それから私は、ブーストライブラリ

boost::random::uniform_int_distribution

を使用して同じことを試してみましたが、それは〜0.25秒を要しました。だから私の質問はこれです - 私はPython(ライブラリ)を使用してやりたいことをするための良い方法はありますか?どんな提案も大歓迎です。ありがとう。

答えて

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) 
関連する問題