2017-10-05 16 views
2

numpy.random.uniformは、配列引数をサポートしていますが、np.random.randintない:変数maxとのランダム整数のシーケンスを生成するためにnumpyの使用/分

import numpy as np 
two_random_uniforms = np.random.uniform([0, 1], [3, 4]) 
this_raises_exception = np.random.randint([0, 1], [3, 4]) 

私は、コードの2行目から必要な動作は同等です:

result = [] 
for lown, highn in zip([0, 1], [3, 4]): 
    result.append(np.random.randint(lown, highn)) 

pythonループを書き込まずに、変数max/minでランダムな整数生成を行う方法はありますか?上記の回避策は、アプリケーションに必要な大規模なアレイでは許容できないほど遅くなります。私はcythonでループを書くことができますが、可能であればNumpyを使用したいと思います。

答えて

2

あなたができる簡単なことの1つは、浮動小数点を生成し、それらを丸めることです。

def my_randint(low, high): 
    return np.floor(np.random.uniform(low, high)) 

それは、この手順はほんの少し他よりも可能性の高いいくつかの整数を作るために、結果の分布を少し微調整するかもしれないことは可能ですが、あなたは、暗号化や他の敏感なアプリケーションで作業している場合を除き、それはおそらく、」勝ちましたt問題。