Python 函数生成一个数字数组,该数组的总和为输入的数字

Python 函数生成一个数字数组,该数组的总和为输入的数字,python,Python,我知道这看起来很愚蠢,但我需要创建一个函数generate_sum_array(seed,factor),该函数将创建任意数量的元素数组,这些元素按随机顺序排列,其中所有数组元素的总和为seed,并且每个have元素都可以被factor整除 例如: 生成求和数组(100.10) 应该返回类似于 [20,10,40,10,20]或[10,10,10,10,10,10]或[50,20,10,20,20]等。只要所有元素的总和是100种子 可以有无限的可能性(我想……我不确定……可以生成多少个不同的数

我知道这看起来很愚蠢,但我需要创建一个函数
generate_sum_array(seed,factor)
,该函数将创建任意数量的元素数组,这些元素按随机顺序排列,其中所有数组元素的总和为
seed
,并且每个have元素都可以被
factor
整除 例如:
生成求和数组(100.10)
应该返回类似于
[20,10,40,10,20]
[10,10,10,10,10,10]
[50,20,10,20,20]
等。只要所有元素的总和是
100
种子
可以有无限的可能性(我想……我不确定……可以生成多少个不同的数组)

您可以执行的最简单的函数是:

def generate_sum_array(seed,factor):
    return [factor for i in range(seed // factor)] if seed % factor == 0 else None

任何其他有效的组合都是由返回的列表的总和组成的

如果
种子
101
因子
10
,那么输出结果是什么呢?@AndrejKesely在我的上下文中,它永远不会是那样的。@AndrejKesely其他人可能只是删除因子部分
from random import randint
def generate_sum_array(seed, factor):
    if seed%factor:
        raise ValueError("Seed and factor are inconsistent")
    remnant = seed
    arr = []
    while(remnant):
        val = randint(1, remnant/factor)*factor
        arr.append(val)
        remnant-=val
    return arr