randrange(start, stop)
只接受整数参数。那么如何获得两个浮点值之间的随机数呢?
np.random.uniform(start, stop)
或 np.random.uniform(start, stop, samples)
如果您想要多个样本。否则下面的答案是最好的。
如果你想生成一个随机浮点数,点右侧有 N 个数字,你可以这样做:
round(random.uniform(1,2), N)
第二个参数是小数位数。
random.uniform(a, b)
似乎是您正在寻找的东西。从文档:
返回一个随机浮点数 N,使得 a <= N <= b for a <= b and b <= N <= a for b < a。
请参阅here。
根据我处理 python 的经验,我只能说随机函数可以帮助生成随机浮点数。以下面的例子为例;
import random
# Random float number between range 15.5 to 80.5
print(random.uniform(15.5, 80.5))
# between 10 and 100
print(random.uniform(10, 100))
The random.uniform() function returns a random floating-point number between a given range in Python
两组代码生成随机浮点数。你可以尝试用它来给你想要的东西。
最常见的是,您会使用:
import random
random.uniform(a, b) # range [a, b) or [a, b] depending on floating-point rounding
如果需要,Python 会提供 other distributions。
如果您已经导入了 numpy
,则可以使用其等效项:
import numpy as np
np.random.uniform(a, b) # range [a, b)
同样,如果您需要另一个分发版,numpy
提供与 python 相同的分发版以及 many additional ones。
使用它来获取范围 n 到 m 之间的随机浮点数:
import random
random.uniform(n,m)
如果您想获得最多 x 位小数的随机浮点数,您可以使用它来代替:
import random
round(random.uniform(n, m), x)
Returns a random floating point number N such that a <= N <= b for a <= b and b <= N <= a for b < a
的文档,换句话说,输出N
可以等于输入a
和b
。在这种情况下1.5
和1.9
。.uniform
函数,而是使用.random
或randrange
?1.5 + random.random() * (1.9 - 1.5)
应该这样做,即使根据规范,这永远不会完全返回1.9
(即使在理论上)。uniform(a, b)
被实现为a + (b-a) * random()
并返回 一个范围为 [a, b) 或 [a, b] 的随机数,具体取决于四舍五入 github.com/python/cpython/blob/…