我试图想出一个方法将一个数字拆分成碎片,当我后来添加它们时得到相同的结果。例如,需要以下伪代码。
我尝试了几种实现,但它们都没用,这就是我不提供任何远程代码的原因...... 谢谢。
答案 0 :(得分:0)
@ user3745919,您的要求(2)和(3)没有明确定义。从另一个数字中减去一系列随机数并不一定能完全达到零。
那就是说,这是一个使用Python 2.7 decimal
module的相当文字化的解释。请注意,由于我刚刚提到的问题,生成的列表的总和不会加起来原始d
:
from decimal import *
from random import random
getcontext().prec = 8
d = Decimal('2.22222222')
print "Original value d:", d
l = []
while d > Decimal('0'):
r = Decimal(random()).quantize(Decimal('1.00000000'))
print "Random number in [0,1) rounded to 8 digits:", r
l.append(r)
d -= r
print "Sum of all random numbers:", sum(l)
print "Original d - sum:", d