编写一个发红包程序,当用户输入发红包金额和人数后,程序发出相应的红 包个数及金额。如图所示 请输入红包总金额:100请输入红包个数:10 红包随机金额为:[12,1,25,5,0,24,5,6,3,19]
时间: 2023-11-19 17:06:46 浏览: 87
生成固定红包与随机红包,随机红包金额依据截尾正态分布算法来生成
好的,我可以帮你编写这个程序。以下是 Python 代码:
```python
import random
def generate_red_packet(total_amount, num):
result = []
remain_amount = total_amount
remain_num = num
for i in range(num-1):
amount = round(random.uniform(0, remain_amount/remain_num*2), 2)
result.append(amount)
remain_amount -= amount
remain_num -= 1
result.append(round(remain_amount, 2))
random.shuffle(result)
return result
total_amount = float(input("请输入红包总金额:"))
num = int(input("请输入红包个数:"))
red_packets = generate_red_packet(total_amount, num)
print("红包随机金额为:", red_packets)
```
这个程序中,我们定义了一个函数 `generate_red_packet`,它接受两个参数:`total_amount` 表示总金额,`num` 表示红包个数。函数返回一个列表,其中包含了每个红包的金额(保留两位小数)。
在 `generate_red_packet` 函数中,我们使用了一个循环来生成前 `num-1` 个红包的金额。我们使用 `random.uniform` 函数来随机生成每个红包的金额,金额的范围是从 0 到剩余总金额除以剩余红包个数的两倍。这个范围确保了每个红包的平均金额是相等的,但是每个红包的具体金额是随机的。
生成前 `num-1` 个红包的金额之后,我们计算出最后一个红包的金额,它等于剩余总金额减去前面 `num-1` 个红包的金额之和。最后我们将这些红包的金额列表进行随机排序,保证每个红包的金额是随机的。
最后,我们将生成的红包金额列表输出到屏幕上。
阅读全文