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

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()

Python——random模块模拟发红包算法_第1张图片

你可能感兴趣的:(Python,实践题目)