ChatGPT解决这个技术问题 Extra ChatGPT

如何获得浮点范围之间的随机数?

randrange(start, stop) 只接受整数参数。那么如何获得两个浮点值之间的随机数呢?

如果您想要 numpy,它是 np.random.uniform(start, stop)np.random.uniform(start, stop, samples) 如果您想要多个样本。否则下面的答案是最好的。

Y
Yuri Stuken

使用 random.uniform(a, b)

>>> random.uniform(1.5, 1.9)
1.8733202628557872

这理论上可以产生 1.5 和 1.9 吗?还是只会产生 1.50~1 和 1.89~?
@Musixauce3000 简短回答:是的。更长的答案:如果您查看它说明 Returns a random floating point number N such that a <= N <= b for a <= b and b <= N <= a for b < a 的文档,换句话说,输出 N 可以等于输入 ab。在这种情况下 1.51.9
是否有另一种方法可以不使用 .uniform 函数,而是使用 .randomrandrange
@DerryckDX 1.5 + random.random() * (1.9 - 1.5) 应该这样做,即使根据规范,这永远不会完全返回 1.9 (即使在理论上)。
@Musixauce3000 似乎 uniform(a, b) 被实现为 a + (b-a) * random() 并返回 一个范围为 [a, b) 或 [a, b] 的随机数,具体取决于四舍五入 github.com/python/cpython/blob/…
B
Baurin Leza

如果你想生成一个随机浮点数,点右侧有 N 个数字,你可以这样做:

round(random.uniform(1,2), N)

第二个参数是小数位数。


t
tzot

random.uniform(a, b) 似乎是您正在寻找的东西。从文档:

返回一个随机浮点数 N,使得 a <= N <= b for a <= b and b <= N <= a for b < a。

请参阅here


D
DrosnickX

根据我处理 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

两组代码生成随机浮点数。你可以尝试用它来给你想要的东西。


s
stwykd

最常见的是,您会使用:

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


S
Sahim Salem

使用它来获取范围 n 到 m 之间的随机浮点数:

import random
random.uniform(n,m)  

如果您想获得最多 x 位小数的随机浮点数,您可以使用它来代替:

import random
round(random.uniform(n, m), x)