我想要一个0到1之间的随机数,比如0.3452。我用了随机。Randrange(0,1)但对我来说总是0。我该怎么办?


当前回答

这个解决方案有效!

The random randrange (0, 2)

其他回答

我想要一个0到1之间的随机数,比如0.3452

Random.random()就是你要找的东西:

来自python文档: 对象中的下一个随机浮点数 范围[0.0,1.0)。


顺便问一下,为什么你的尝试没有成功?:

你的尝试是:随机的。randrange (0, 1)

来自python文档: random.randrange()返回range(start, stop, step)中随机选择的元素。这相当于choice(range(start, stop, step)),但实际上并没有构建一个range对象。

你在这里所做的,random。randrange(a,b)是从range(a,b)中选择一个随机元素;在你的例子中,from range(0,1),但是,你猜怎么着!: range(0,1)中唯一的元素是0,所以,你从range(0,1)中唯一可以选择的元素是0;这就是为什么你总是得到0。

我发现我的变化更灵活。

str_Key           = ""
str_FullKey       = "" 
str_CharacterPool = "01234ABCDEFfghij~-)"
for int_I in range(64): 
    str_Key = random.choice(str_CharacterPool) 
    str_FullKey = str_FullKey + str_Key 

RTM

来自Python随机模块的文档:

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.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

这个解决方案有效!

The random randrange (0, 2)