web-dev-qa-db-ja.com

pythonで0から1の間の乱数

0.3452のように、0から1の間の乱数が欲しいのですが。私はrandom.randrange(0, 1)を使いましたが、私はいつも0です。私は何をすべきか?

76
Talia

あなたはrandom.uniformを使うことができます

import random
random.uniform(0, 1)
134
jh314

random.random()はまさにそれをします

>>> import random
>>> for i in range(10):
...     print(random.random())
... 
0.908047338626
0.0199900075962
0.904058545833
0.321508119045
0.657086320195
0.714084413092
0.315924955063
0.696965958019
0.93824013683
0.484207425759

もしあなたが本当に乱数を使いたいなら、そして範囲[0、1]をカバーするために:

>>> import os
>>> int.from_bytes(os.urandom(8), byteorder="big") / ((1 << 64) - 1)
0.7409674234050893
47
John La Rooy

random.random()で試すことができます

random.random() [0.0、1.0)の範囲の次のランダムな浮動小数点数を返します。

from https://docs.python.org/2/library/random.html

10
matsib.dev

あなたはuse numpy.random モジュールを使うことができます。

>>> import numpy as np
>>> np.random.random(1)[0]
0.17425892129128229
>>> np.random.random((3,2))
array([[ 0.7978787 ,  0.9784473 ],
       [ 0.49214277,  0.06749958],
       [ 0.12944254,  0.80929816]])
>>> np.random.random((3,1))
array([[ 0.86725993],
       [ 0.36869585],
       [ 0.2601249 ]])
>>> np.random.random((4,1))
array([[ 0.87161403],
       [ 0.41976921],
       [ 0.35714702],
       [ 0.31166808]])
>>> np.random.random_sample()
0.47108547995356098
4
Hackaholic

random.randrange(0,2)これが動作します!

4
infinito84

RTM

Pythonのrandomモジュールのドキュメントから:

Functions for integers:

random.randrange(stop)
random.randrange(start, stop[, step])

    Return a randomly selected element from range(start, stop, step).
    This is equivalent to choice(range(start, stop, step)), but doesn’t
    actually build a range object.

それはなぜそれがあなたに0を与えるだけなのかを説明します、そうではありません。 range(0,1)[0]です。その値だけで構成されるリストから選択しています。

これらのドキュメントからも:

random.random()    
    Return the next random floating point number in the range [0.0, 1.0).

しかし、numpyタグを含めることが意図的な場合は、np.random関数を使用して、1回の呼び出しでその範囲内に多数のランダム浮動小数点数を生成できます。

2
hpaulj