import random
def random_group(num, sum):
list1 = [0 for x in range(num)]
min = 0
max = sum
random.uniform
# 在循环中生成num - 1个随机数
for i in range(num - 1):
# 取一个随机数放在a位置。round(x * 100)/100的操作是保留x小数点后2位
list1 = round(random.uniform(min, max) * 100) / 100
# // 缩小下一个随机数的范围,比如目标和为2005,生成的第一个随机数为500,则第二个随机数的范围为2005 - 500 = 1505
max -= list1
# 直接将剩下的值作为最后一个随机数
list1[num - 1] = round(max * 100) / 100
return list1
if __name__ == '__main__':
inputnum = int(input("输入目标个数: "), 10)
targetsum = random.uniform(1000, 5000)
for i in range(10):
list0 = random_group(inputnum, targetsum)
print("目标和 : %.2f" %(targetsum))
print("结果 : %s" %list0)