封装一个红包函数
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、随机从某个红包中减去随机金额,将减去的金额随机分配给另外一个红包
网友评论