python 生成从零到极限的均匀分布的数字列表,并具有特定的总和和计数

gkn4icbw  于 2023-04-28  发布在  Python
关注(0)|答案(1)|浏览(127)

我想写一个Python函数来生成一个正数列表,这些正数从零到最大值均匀分布,称为limit。列表的总和应该等于值total_sum,并且列表应该由count数量的项目组成。
例如:

func(limit=50, total_sum=150, count=6)
# [0, 10, 20, 30, 40, 50]

func(limit=200, total_sum=500, count=5)
# [0, 50, 100, 150, 200]

我该如何写这个函数?这可能吗在写了这篇文章之后,我认为只有在极少数情况下才有可能,比如上面的那些。

46qrfjad

46qrfjad1#

def wanted (limit,total_sum,count):
     interval=limit/(count-1) #here we used count-1 to know between elements 
     result=[]
     for i in range(count):
         result.append(round(interval * i,1)) #generates evenly spaced nums

     scaling = total_sum/sum(result) # to know the ratio we should multiply
     
     result=[round(j*scaling,1) for j in result]
  
     return result

print(wanted(limit,total_sum,count)

相关问题