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

Man*_*gan 368 python random floating-point

randrange(start, stop)只接受整数参数.那么如何在两个浮点值之间得到一个随机数?

Yur*_*ken 585

使用random.uniform(a,b):

>>> random.uniform(1.5, 1.9)
1.8733202628557872
Run Code Online (Sandbox Code Playgroud)

  • @Musixauce3000简答:是的.更长的答案:如果你看一下它所说的文件`返回一个随机浮点数N,这样a <= N <= b表示<= b而b <= N <= a表示b <a`换句话说输出"N"可以等于输入"a"和"b".在这种情况下,`1.5`和`1.9`. (12认同)
  • 理论上可以产生1.5和1.9吗?还是只会产生1.50〜1和1.89〜? (3认同)
  • @Musixauce3000 似乎`uniform(a, b)` 被实现为`a + (ba) * random()` 并返回* [a, b) 或[a, b] 范围内的随机数,具体取决于舍入* https://github.com/python/cpython/blob/963eb0f4738456455b9bef7eb531b46805415208/Lib/random.py#L415 (2认同)

gar*_*rtb 66

random.uniform(a, b)似乎是你在寻找的东西.来自文档:

返回随机浮点数N,使得对于<= b,a <= N <= b,对于b <a,b <= N <= a.

看到这里.


Bau*_*eza 31

如果你想在点的右边生成一个N位数的随机浮点数,你可以这样做:

round(random.uniform(1,2), N)
Run Code Online (Sandbox Code Playgroud)

第二个参数是小数位数.

  • 我不知道为什么这个没有更多的赞成票,其他的没有舍入机制。 (4认同)

小智 16

根据我处理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
Run Code Online (Sandbox Code Playgroud)

两组代码生成随机浮点数。您可以尝试用它进行试验,以获得您想要的东西。


stw*_*ykd 6

最常见的是,您会使用:

import random
random.uniform(a, b) # range [a, b) or [a, b] depending on floating-point rounding
Run Code Online (Sandbox Code Playgroud)

如果需要,Python 提供了其他发行版

如果您已经numpy导入,则可以使用其等效项:

import numpy as np
np.random.uniform(a, b) # range [a, b)
Run Code Online (Sandbox Code Playgroud)

同样,如果您需要另一个发行版,请numpy提供与 python 相同的发行版,以及许多其他发行版