好的,让我说我有数字,100,我想随机将它分成12组,所有组的总数等于100.我怎么做,我写了一段代码但是它有一个缺陷。
from random import randint
total = 100
while total < 101:
for i in range(0,9):
num = randint(1,total)
print(i,"|","*"*num)
total -= num
if total <= 0:
for j in range (i,10):
print(j,"|","*"*total)
当你运行它时,一旦总数等于零或更少,它就会崩溃,所以它不会发布完整的结果,我不知道如何解决这个问题。我是Python的新手,所以我的知识有限。
答案 0 :(得分:1)
将数字 n 随机分割成 k 组在数学上等效于随机放置 k -1分频器。因此,我会做这样的事情:
from random import randint
def split_randomly(n,k):
dividers = set() # guarantee no duplicate dividers
while len(dividers) < k-1:
dividers.add(randint(1,n-1))
dividers = [0] + sorted(dividers) + [n]
return [dividers[i+1] - dividers[i] for i in range(len(dividers)-1)]
答案 1 :(得分:0)
对于正确的随机拆分,您可以使用random.sample
。以下收集来自[1..n]和k-1
以及0
的{{1}}随机分割点的样本,并返回其成对差异的n
:
list