运用python中的numpy实现微信红包的两种发放方式,能够输入领取红包人数(或通过读取文件确定人数)、发放金额,实现两种发放方式,
时间: 2024-03-24 11:39:12 浏览: 13
好的,下面是两种发放方式的具体实现:
1. 均分红包法:将红包总金额平均分给所有领取人数,每个人领取的金额相同。
```python
import numpy as np
# 输入红包总金额和领取人数
total_money = float(input("请输入红包总金额:"))
num_people = int(input("请输入领取红包的人数:"))
# 使用numpy生成随机数序列
rand_list = np.random.rand(num_people)
# 将序列归一化,使得随机数之和为1
rand_sum = np.sum(rand_list)
rand_list = rand_list / rand_sum
# 将红包总金额按比例分配给各个人
money_list = rand_list * total_money
print("每个人领取的金额为:", money_list)
```
2. 按比例随机分配法:将红包总金额按照一定比例分配给所有领取人数,每个人领取的金额不同。
```python
import numpy as np
# 输入红包总金额和领取人数
total_money = float(input("请输入红包总金额:"))
num_people = int(input("请输入领取红包的人数:"))
# 输入每个人应该获得的最小金额比例
min_ratio = float(input("请输入每个人应该获得的最小金额比例:"))
# 使用numpy生成随机数序列
rand_list = np.random.rand(num_people-1)
# 将序列归一化,使得随机数之和为1
rand_sum = np.sum(rand_list)
rand_list = rand_list / rand_sum
# 将红包总金额按比例分配给各个人
money_list = np.zeros(num_people)
money_list[0] = min_ratio * total_money
for i in range(num_people-1):
money_list[i+1] = rand_list[i] * (1-min_ratio) * total_money
# 随机打乱领取顺序
np.random.shuffle(money_list)
print("每个人领取的金额为:", money_list)
```
希望以上代码能够帮助到你。