Python从set numb随机分配一个列表

2024-06-02 08:51:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我要做的是列一个列表,上面填上不同的数字组合(不是偶数),这些组合加起来就是一个预先定义的数字。在

例如,如果我有一个变量total = 50以及一个包含7个数字的列表,那么每次我在循环中生成并打印列表时,结果都会完全不同,有些是巨大的,有些则接近空或空。下一次,我可能希望所有的限制都是0或者甚至是0。在

这可能吗?在

谢谢

编辑:我已经到了这里,但是它似乎优先考虑了结尾,我如何使每个变量都有相同的机会得到高或低的数字?在

`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))
`

Tags: runimport编辑列表size定义结尾数字
2条回答

如果你想要一个n个随机数的列表,加起来就是一个变量x,那么创建n-1个随机数。最后一个数是x和n-1个随机数的差。例如,如果您想要一个大小为3,加起来等于5的列表,则随机创建两个数字1和2。1+2=3,5-3=2,所以列表是1,2,2。在

免责声明:我不介意这个代码是什么意思。在

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))

输出

^{pr2}$

相关问题 更多 >