python中0到1之间的随机数

Tal*_*ia 101 python random

我想要一个介于0和1之间的随机数,如0.3452.我用过,random.randrange(0, 1)但对我来说总是0.我该怎么办?

jh3*_*314 165

您可以使用 random.uniform

import random
random.uniform(0, 1)
Run Code Online (Sandbox Code Playgroud)

  • 确保你有`import random` (3认同)
  • 要获得始终相同的数字,请确保首先设置种子,只需`random.seed(123)` (3认同)
  • 这只是`返回+(ba)* self.random()` (2认同)

Joh*_*ooy 58

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
Run Code Online (Sandbox Code Playgroud)

如果你想要真正的随机数,并覆盖范围[0,1]:

>>> import os
>>> int.from_bytes(os.urandom(8), byteorder="big") / ((1 << 64) - 1)
0.7409674234050893
Run Code Online (Sandbox Code Playgroud)

  • random.random返回[0,1]之间的值,所以return永远不会是1. (3认同)
  • 即使它包含,返回 1 的概率也会极低(因为实际上 python 的浮点数有 64 位精度),所以它不会改变太多。 (2认同)

mat*_*dev 12

你可以试试 random.random()

random.randrange(0, 1) 返回[0.0,1.0]范围内的下一个随机浮点数.

来自https://docs.python.org/2/library/random.html


Hac*_*lic 6

您可以使用使用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
Run Code Online (Sandbox Code Playgroud)


小智 5

random.randrange(0,2)可行!