How to get a random number between a float range?
randrange(start, stop)只接受整数参数。 那么如何在两个浮点值之间得到一个随机数?
使用random.uniform(a,b):
1 2
| >>> 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可以等于输入a和b。 在这种情况下1.5和1.9。
-
是否有另一种方法可以在不使用.uniform函数的情况下执行此操作,而是使用.random或randrange?
-
@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/…
random.uniform(a, b)似乎是您的目标。 来自文档:
Return a random floating point number N such that a <= N <= b for a <= b and b <= N <= a for b < a.
看这里。
如果你想在点的右边生成一个N位数的随机浮点数,你可以这样做:
1
| round(random.uniform(1,2), N) |
第二个参数是小数位数。