2016-11-10 3 views
0

私はランダムなシステムを生成するために使用しています。その機能のために、Numpyでランダムモジュールを選択したいと思います。しかし、私がそれを実装したいとき、Numpyは実際にpsedu乱数を生成しないことに気付きます。簡単に説明すると、次のコードの結果は毎回0になります。numpyのrandomは乱数を生成しません

import numpy as np 
    for i in range(10000): 
     n[i] = np.random.randint(0,1) 

このように、nのセルはすべてゼロの値を持ちます。各繰り返しの間に一時停止を追加しても、私は同じ結果を残しています。

import time 
    import numpy as np 
    for i in range(10000): 
     n[i] = np.random.randint(0,1) 
     time.sleep(2) 

これは、ランダムモジュールでビルドする場合には当てはまりません。 この問題は実際に私の結果の完全性に影響を及ぼす可能性があるので、この問題をどのように克服することができるのか、なぜこれが起こっているのか、非常に感謝します。

PS:私はIDLEでnumpyのをインポートし、単純に何度も何度も

np.random.randint(0,1) 

を印刷するときにはそうではありません。この状況では、結果はランダムなように見えます。

答えて

4

numpy.random.randint(low, high)の引数は、range(low, high)のように排他的な範囲です。 numpy.random.randint(0, 2)は0または1を生成する可能性が同じです。

これは、包括的な範囲を使用する標準ライブラリのrandom.randint()とは異なります。包括的範囲は、設計ミスであると広く考えられている。 2つの機能の命名は、ほとんど偶然です。 numpy.random.randint()NumericRandomArrayモジュールの前にあるモジュールrandomのモジュールに下がり、Numericからnumpyへの移行を容易にするために、RandomArrayとの下位互換性を考慮して設計されています。

1

randintab-1の間の数字を生成し、そうしたい場合は、ランダムなバイナリ番号は、次のいずれかを使用します。あなたが使用して同時に配列を生成することができ、また

np.random.randint(0,2) 
np.random.randint(2) 

n = np.random.randint(2, size=10000) 

なぜIDLEが私が恐れているドキュメントと異なる動作をしているのかよくわかりません。

0

"randint"は指定された範囲内の整数だけを生成し、コードでは番号1のみ使用できます。代わりに使用したの :カンマの後に高い値と

randint(0,1) 

使用何か、など:

randint(0,2) 

は、1または2また

で乱数を作成するには、組み込みのrandom関数を使用すると、0.0と1.0の間のランダムな浮動小数点値を生成することができます:

import random 
randnum = random.random() 
print(randnum) 

これは、 "0"などの値を連想させる出力を与えます。1798164301328583 "であり、単純なpython演算を使用して必要な値にすることができます。

関連する問題