函数生成与输入数字相加的数字数组

时间:2019-12-09 18:15:01

标签: python

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您可以执行的最简单的符合您的限制的功能是:

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

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