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、随机从某个红包中减去随机金额,将减去的金额随机分配给另外一个红包

你可能感兴趣的:(Python实现红包)