我想在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,然后我需要选择其中一个值并将其放入变量中。
答案 0 :(得分:1)
我知道这样做的最简单方法是:
for i in range(10):
print (random.random() * (0.909 - 0.101) + 0.101)
它是如何工作的?从0
到B
生成随机数的通用公式为:
random.random() * B
由于random.random()
会生成[0,1)
范围内的数字,因此乘以B
会产生[0,B)
之间的数字。现在,如果您不希望在0
但A
处开始生成范围,您可以尝试编写:
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.101
和B=0.909
。请注意,由于范围在右侧打开,您将永远不会得到0.909
,但您可以获得0.90899999
或其他任何非常接近的内容。
最后,关于小数位数,请查看print
函数的文档,了解如何打印到某个小数位的数字(这取决于您的Python版本)。例如,在Python3中可能是这样的:
print('{0:0.3f}'.format(my_var))