我要做的是制作一个列表,其中填充了不同的数字组合(不是偶数),这些组合都加起来是预先定义的数字。
例如,如果我有一个变量total = 50
以及一个包含7个数字的列表,每次我在循环中生成并打印列表时,结果将完全不同,其中一些是巨大的,其他的近空或空。我不希望对值的范围有任何限制(可以是0或整个50,下一次甚至可以全部平衡)。
这可能吗?
由于
编辑:我已经到了这里,但似乎优先考虑结局,我怎样才能让每个变量都有相同的高或低数字?`import random
tot = 50
size = 7
s = 0
run = 7
num = {}
while run > 0:
num[run] = random.randint(s,tot)
tot -= num[run]
run -= 1
print(str(num))
`
答案 0 :(得分:1)
免责声明:我不介意这段代码是什么意思。
from random import randint, seed
seed(345)
def bizarre(total, slots):
tot = total
acc = []
for _ in range(slots-1):
r = randint(0,tot)
tot -= r
acc.append(r)
acc.append(total-sum(acc))
return acc
# testing code
for i in range(10):
tot = randint(50,80)
n = randint(5,10)
b = bizarre(tot, n)
print "%3d %3d %s -> %d" % (tot, n, b, sum(b))
73 5 [73, 0, 0, 0, 0] -> 73
54 6 [36, 5, 9, 0, 3, 1] -> 54
60 7 [47, 6, 6, 1, 0, 0, 0] -> 60
69 7 [3, 48, 15, 3, 0, 0, 0] -> 69
72 8 [36, 18, 18, 0, 0, 0, 0, 0] -> 72
65 8 [17, 32, 13, 3, 0, 0, 0, 0] -> 65
54 7 [33, 13, 0, 2, 4, 1, 1] -> 54
54 6 [7, 11, 26, 3, 5, 2] -> 54
67 7 [62, 5, 0, 0, 0, 0, 0] -> 67
67 8 [28, 25, 1, 0, 10, 3, 0, 0] -> 67
答案 1 :(得分:0)
如果你想要一个n个随机数的列表,它们加起来变量x,那就创建n-1个随机数。然后最后一个数字是x和n-1个随机数之间的差值。例如,如果您想要一个大小为3的列表,最多可添加5个随机创建两个数字,1和2. 1 + 2 = 3,5-3 = 2,因此列表为1,2,2。