web-dev-qa-db-ja.com

Pythonでは、random.uniform()とrandom.random()の違いは何ですか?

pythonランダムモジュールの場合、random.uniform()random.random()の違いは何ですか?]これらは両方とも擬似乱数を生成し、random.uniform()は数値を生成します一様分布からrandom.random()は次の乱数を生成します。違いは何ですか?

28
NKCP

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.0float値が1.0に最も​​近いのでfloat値が得られます) 1.0に最も​​近い場合、丸めエラーの可能性はありません)。

40
Martijn Pieters

に random.random() 出力は0と1の間にあり、入力パラメーターを取りません。

一方、 random.uniform() パラメータを受け取り、乱数の範囲を送信できます。例えば.
import random as ra print ra.random() print ra.uniform(5,10)

出力:-
0.672485369423 7.9237539416

5

違いは引数にあります。範囲[0.0、1.0)の一様分布から乱数を生成することは非常に一般的であるため、 random.random() がこれを行います。 random.uniform(a, b) を使用して、異なる範囲を指定します。

4
Bill the Lizard

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の間の数値が得られます。

1
RickardSjogren

上記のこととは別に、.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(...)を使用することになります。

0
Daksh