Random 十进制随机数发生器

Random 十进制随机数发生器,random,ipython,decimal,spyder,Random,Ipython,Decimal,Spyder,我想生成一个包含10个随机小数的列表,比如说0.101到0.909。目前,这似乎适用于小数点后两位: 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位小数,然后我需要选择其中一个值并将其放入变量。我知道的最简单的方法是: for i in range(10): p

我想生成一个包含10个随机小数的列表,比如说0.101到0.909。目前,这似乎适用于小数点后两位:

    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位小数,然后我需要选择其中一个值并将其放入变量。

我知道的最简单的方法是:

for i in range(10):
    print (random.random() * (0.909 - 0.101) + 0.101)
它是如何工作的?生成从0到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))

谢谢,如果我想要一个变量,比如说myvar=floatrandom.random*0.909-0.101+0.101成为列表中的一个怎么办?嗨,刚刚尝试了myrand=intrandom.random*12-8+12,它只返回12以上的值。在我看来,它就像12-8=4+12以上的任何值一样。我得到了一个17???我还尝试了一个简单的random.random,它只返回0,我认为默认值是w作为介于0-10之间的值??对不起,我不明白你的意思,但是intrandom.random*12-8+12不是我写的公式,它应该在末尾是+8,而不是+12。关于random.random的返回值,如果你只得到数字0是因为你要将它转换为int,那么如果你想知道该函数返回什么,就不要进行转换。li我如何从i中选择一个小数并使用randint750950/1000将其转换为一个变量?
print('{0:0.3f}'.format(my_var))