pythonランダムモジュールの場合、random.uniform()
とrandom.random()
の違いは何ですか?]これらは両方とも擬似乱数を生成し、random.uniform()
は数値を生成します一様分布からrandom.random()
は次の乱数を生成します。違いは何ですか?
random.random()
は[0.0, 1.0)
の範囲のランダムな浮動小数点数を提供します(そのため0.0
を含みますが、セミオープン範囲としても知られる1.0
は含みません)。 random.uniform(a, b)
は[a, b]
の範囲のランダムな浮動小数点数を提供します(丸めによりb
が提供される場合があります)。
random.uniform()
の実装 はrandom.random()
を直接使用します:
def uniform(self, a, b):
"Get a random number in the range [a, b) or [a, b] depending on rounding."
return a + (b-a) * self.random()
random.uniform(0, 1)
は基本的にrandom.random()
と同じものです(1.0
回float値が1.0
に最も近いのでfloat値が得られます) 1.0
に最も近い場合、丸めエラーの可能性はありません)。
に random.random() 出力は0と1の間にあり、入力パラメーターを取りません。
一方、 random.uniform() パラメータを受け取り、乱数の範囲を送信できます。例えば.import random as ra print ra.random() print ra.uniform(5,10)
出力:-0.672485369423 7.9237539416
違いは引数にあります。範囲[0.0、1.0)の一様分布から乱数を生成することは非常に一般的であるため、 random.random()
がこれを行います。 random.uniform(a, b)
を使用して、異なる範囲を指定します。
random.uniform
のドキュメントによると:
A <= bの場合a <= N <= b、b <aの場合b <= N <= aとなるようなランダムな浮動小数点数Nを返します。
while random.random
:
範囲[0.0、1.0)の次のランダムな浮動小数点数を返します。
つまりrandom.uniform
を使用すると、擬似乱数を描画する範囲を指定できます。 3から10の間。random.random
を使用すると、0から1の間の数値が得られます。
上記のこととは別に、.uniform()
は、.random()
では不可能な所望の形状を持つ複数の乱数を生成するためにも使用できます。
np.random.seed(99)
np.random.random()
#generates 0.6722785586307918
一方、次のコード
np.random.seed(99)
np.random.uniform(0.0, 1.0, size = (5,2))
#generates this
array([[0.67227856, 0.4880784 ],
[0.82549517, 0.03144639],
[0.80804996, 0.56561742],
[0.2976225 , 0.04669572],
[0.9906274 , 0.00682573]])
これはrandom(...)ではできません。ML関連のものについてrandom(...)番号を生成している場合、ほとんどの場合、.uniform(...)
を使用することになります。