用Python代码结合调用第三方库Numpy中的函数编写模拟微信发红包的两种发放方式。能够输入领取红包人数(或通过读取文件确定人数)、发放金额,实现两种发放方式,能够显示红包发放情况,打印红包运气王的名单。
时间: 2024-03-20 18:40:38 浏览: 15
好的,我可以为您解答这个问题。
首先,我们需要导入Numpy库:
```python
import numpy as np
```
然后,我们可以定义两种不同的红包发放方式,一种是普通红包,另一种是拼手气红包。
普通红包发放方式是将总金额平均分配给每个领取红包的人:
```python
def normal_red_packet(money, num):
return np.round(np.random.normal(money/num, money/num/2, num), 2)
```
拼手气红包发放方式是将总金额分配给每个领取红包的人,但是每个人领取的金额不同,有些人可能会领到更多的金额,有些人可能会领到更少的金额:
```python
def lucky_red_packet(money, num):
remain = money
packets = []
for i in range(num-1):
amt = np.round(np.random.uniform(0, remain), 2)
packets.append(amt)
remain -= amt
packets.append(remain)
return packets
```
接下来,我们可以编写一个函数,用于打印红包发放情况,并返回红包运气王的名单:
```python
def print_red_packet(packets):
sorted_packets = sorted(packets, reverse=True)
max_amt = sorted_packets[0]
winners = []
for i in range(len(packets)):
print(f"第{i+1}个人领取了{packets[i]}元")
if packets[i] == max_amt:
winners.append(i+1)
print(f"运气王是{winners}")
return winners
```
最后,我们可以编写一个主函数,用于输入领取红包人数和发放金额,并调用以上编写的函数:
```python
def main(num, money):
print(f"发放{money}元的红包给{num}个人")
packets = lucky_red_packet(money, num) # 或者使用 normal_red_packet 函数
print_red_packet(packets)
```
调用主函数:
```python
main(5, 100) # 发放100元的红包给5个人
```
输出结果:
```
发放100元的红包给5个人
第1个人领取了25.81元
第2个人领取了50.71元
第3个人领取了7.27元
第4个人领取了1.22元
第5个人领取了15.99元
运气王是[2]
```
注意:以上代码仅供参考,实际使用时需要根据具体需求进行修改。