簡體   English   中英

函數生成與輸入數字相加的數字數組

[英]function to generate array of numbers that sum up to inputed number

我知道這看起來很傻,但我需要創建一個函數generate_sum_array(seed,factor) ,它將創建一個以隨機順序排列的任意數量元素的數組,其中所有數組元素總和為seed ,並且每個有元素都可以被整除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,] [10,10,10,10,10,10,10,10,10,10] [50,20,10,20,]等等 只要所有元素的總和是100種子就可以有無限的可能性(我想.....我不太確定....可以生成多少個不同的數組)

您可以執行的符合您的限制的最簡單功能是:

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

任何其他有效組合都由返回的列表的總和組成

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM