如何获得随机decimal.Decimal
实例?似乎随机模块仅返回浮点数,这些浮点数是要转换为小数的皮塔。
ashirley
问问题
25131 次
7 回答
28
什么是“随机小数”?小数具有任意精度,因此生成一个具有尽可能多的随机性的数字将占用您机器的整个内存来存储。
你必须知道你的随机数需要多少个小数位的精度,此时很容易抓取一个随机整数并将其相除。例如,如果您想要点上方的两位数和分数中的两位数(请参阅此处的 randrange):
decimal.Decimal(random.randrange(10000))/100
于 2009-01-13T15:09:41.450 回答
16
从标准库参考:
要从浮点数创建小数,首先将其转换为字符串。这可以明确提醒转换的细节(包括表示错误)。
>>> import random, decimal
>>> decimal.Decimal(str(random.random()))
Decimal('0.467474014342')
你是这个意思吗?在我看来,它不像皮塔饼。您可以将其缩放到您想要的任何范围和精度。
于 2009-01-13T14:44:36.790 回答
9
如果您知道逗号前后需要多少位数,则可以使用:
>>> import decimal
>>> import random
>>> def gen_random_decimal(i,d):
... return decimal.Decimal('%d.%d' % (random.randint(0,i),random.randint(0,d)))
...
>>> gen_random_decimal(9999,999999) #4 digits before, 6 after
Decimal('4262.786648')
>>> gen_random_decimal(9999,999999)
Decimal('8623.79391')
>>> gen_random_decimal(9999,999999)
Decimal('7706.492775')
>>> gen_random_decimal(99999999999,999999999999) #11 digits before, 12 after
Decimal('35018421976.794013996282')
>>>
于 2009-01-13T14:56:32.787 回答
2
random 模块提供的不仅仅是“仅返回浮点数”,但无论如何:
from random import random
from decimal import Decimal
randdecimal = lambda: Decimal("%f" % random.random())
还是我在您的问题中遗漏了一些明显的东西?
于 2009-01-13T16:04:14.210 回答
2
decimal.Decimal(random.random() * MAX_VAL).quantize(decimal.Decimal('.01'))
于 2012-05-07T14:05:04.463 回答
0
另一种制作随机小数的方法。
import random
round(random.randint(1, 1000) * random.random(), 2)
在这个例子中,
- random.randint()生成指定范围内的随机整数(包括),
- random.random()在 (0.0, 1.0) 范围内生成随机浮点数
- 最后,round()函数将上述值乘法的乘法结果(长如 254.71921934351644)四舍五入到小数点后的指定数字(在我们的例子中,我们得到 254.71)
于 2018-02-26T13:48:00.233 回答
-1
import random
y = eval(input("Enter the value of y for the range of random number : "))
x = round(y*random.random(),2) #only for 2 round off
print(x)
于 2018-04-04T18:44:46.510 回答