Python实现红包

封装一个红包函数

def get_random_money(money=None, num=None):
    r""" 获取红包
    :param money: 红包总金额,单位(分)
    :param num: 红包个数
    :return: {}
    """
    data = []
    if money < num:
        return {"code": 0, "message": "单个红包小于1分!", "data": data}
    # 均分
    rem = money % num
    mean = (money - rem) / num
    for i in range(num):
        data.append(int(mean))
    data[0] = int(data[0] + rem)
    # 随机分配金额
    for i in range(num):
        r1 = random.randrange(0, num)
        r2 = random.randrange(0, num)
        per = random.random()
        mon = data[r1] - int(math.floor(data[r1] * per))
        if data[r1] - mon > 0:
            data[r1] = int(data[r1] - mon)
            data[r2] = int(data[r2] + mon)
        pass
    return {"code": 1, "message": "成功!",  "data": data}

发一个200块的红包给10个人

if __name__ == '__main__':
    money = demo.get_random_money(20000, 10)
    print(money)

结果如下

在这里插入图片描述

实现具体步骤

1、每个红包最少金额为1分
2、均分,将总金额平均分配给每个红包。这里需要取模,将均分后剩余部分分配给第一个红包
3、随机从某个红包中减去随机金额,将减去的金额随机分配给另外一个红包

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值