Python——random模块模拟发红包算法

本文介绍了一个使用Python的random模块实现的发红包算法。该算法能够根据输入的红包总金额和红包个数,随机分配金额给每个抢红包的人,确保每人都能获得至少一分钱,同时保持总额不变。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

random模块模拟发红包算法
需求:输入红包个数和红包的总金额,为抢红包的人随机分配金额,每抢完一个红包之后,至少要给剩下的人每人留一分钱。

import random
def hongbao(total_amount, num):#total_amount: 红包总金额 quantities: 红包个数
    print("红包总金额:%7.2f, 分给%d人"%(total_amount,num))
    amount_list = []         # 用以存储每个人领取的红包金额
    person_num = num     # 抢红包人数
    # 涉及红包金额可带 2 位小数部分
    # 使用先乘 100 计算,再除 100 处理小数点部分
    total_100 = total_amount * 100
    # 这里采用的是二倍均值法
    # 除最后一人,先对前面领取红包金额进行处理
    # 最后剩下的金额,即是最后一人的金额
    for i in range(num - 1):
        amount = random.randint(1, total_100 // person_num * 2)
        # 每次减去当前随机金额,用剩余金额进行下次随机获取
        total_100 -= amount
        person_num -= 1
        amount_list.append(amount / 100)
    amount_list.append(total_100 / 100)
    return amount_list

def main():
    total = float(input("请输入红包总金额:"))
    num = int(input("请输入红包个数:"))
    amount_list = hongbao(total, num)
    print('红包金额分别是:{}'.format(amount_list))

if __name__ == "__main__":
    main()

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唐樽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值