十进制随机数发生器

时间:2017-07-22 06:00:07

标签: random ipython decimal spyder

我想在0.101和0.909之间生成一个类似10个随机小数的列表。目前,这似乎适用于小数点后两位:

    for i in range(10):
        print (random.randint(75,95)/100)

输出如下:

0.93
0.8
0.85
0.89
0.89
0.78
0.79
0.91
0.82
0.86

我希望这有3个小数位而不是2,然后我需要选择其中一个值并将其放入变量中。

1 个答案:

答案 0 :(得分:1)

我知道这样做的最简单方法是:

for i in range(10):
    print (random.random() * (0.909 - 0.101) + 0.101)

它是如何工作的?从0B生成随机数的通用公式为:

random.random() * B

由于random.random()会生成[0,1)范围内的数字,因此乘以B会产生[0,B)之间的数字。现在,如果您不希望在0A处开始生成范围,您可以尝试编写:

random.random() * B + A

但这会产生[A,A+B)之间的数字,这不是你想要的,这就是为什么我们也进行减法:

random.random() * (B - A) + A

一步一步走:

random.random()                -> [0,1)
random.random() * (B - A)      -> [0,B-A)
random.random() * (B - A) + A  -> [A,B)

在您的情况下,A = 0.101B=0.909。请注意,由于范围在右侧打开,您将永远不会得到0.909,但您可以获得0.90899999或其他任何非常接近的内容。

最后,关于小数位数,请查看print函数的文档,了解如何打印到某个小数位的数字(这取决于您的Python版本)。例如,在Python3中可能是这样的:

print('{0:0.3f}'.format(my_var))