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)

结果如下

image.png

实现具体步骤

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容