最近有一个需求需要生成一个总和固定,指定长度的随机数序列,特意记录下代码,与大家分享一下。
既可以生成随机数小数序列,也可以生成随机数整数序列。

import numpy as np

def allocation_amount(num_people, amount):
    # 生成小数随机数
    a = [np.random.uniform(0, amount) for i in range(num_people-1)]
    # 生成整数随机数
    # a = [np.random.randint(0, amount) for i in range(num_people-1)]
    a.append(0)
    a.append(amount)
    a.sort()
    print(a)
    b = [a[i+1]-a[i] for i in range(num_people)]  # 列表推导式,计算列表中每两个数之间的间隔
    print(b)
    b = np.array(b)
    return b

# 随机生成一个长度为5, 总和为2022的列表
bonus = allocation_amount(5, 2022)
print(bonus)
print(np.sum(bonus))

------------- EOF ---------------

更多推荐

python numpy 生成 总和为固定值指定个数的随机数