如果我需要将例7划分为随机数目的随机大小的元素,我该怎么做?在
所以有时我会得到[3,4],有时是[2,3,1],有时是[2,2,1,1,0,1]?在
我想这很简单,但我似乎得不到结果。在这里,我要做的代码明智(不起作用):
def split_big_num(num):
partition = randint(1,int(4))
piece = randint(1,int(num))
result = []
for i in range(partition):
element = num-piece
result.append(element)
piece = randint(0,element)
#What's next?
if num - piece == 0:
return result
return result
编辑:得到的每个数字都应该小于初始数字,零的数量不应该小于分区的数量。在
你必须定义你所说的“随机”是什么意思。如果需要任意整数分区,可以生成所有整数分区,并使用
random.choice
。请参见python: Generating integer partitions这将不会得到带有0的结果。如果允许0,则必须允许可能无限个0的结果或者,如果您只想随机取下一块,请执行以下操作:
由于问题限制,每个数字都应该小于原始数字,这有点尴尬;如果允许原始数字,则会更加优雅。如果你想要0s,你可以做randrange(n),但是除非有隐藏的原因你没有分享,否则这是没有意义的。在
编辑针对问题编辑:由于您希望“零的数量不应小于分区的数量”,您可以任意在末尾添加0:
^{pr2}$这个问题很武断,我强烈建议你选择这个作为你的答案:
我会选择下一个:
然而,我不确定这个随机分布是否完全均匀。在
再次施救:
结果:
^{pr2}$相关问题 更多 >
编程相关推荐