简单聊聊微信红包及其算法

昨天有个小伙伴在微信群里发一篇文章《如何实现抢红包算法》,本着学习的精神(上班太闲) 打开了看看。

文章主要是介绍了两种方法

1.二倍均值法

剩余红包金额为M,剩余人生为N,那么有如下的公式:

每次抢到的金额 = 随机区间 (0, M/N *2)

举个例子:

假设有10个人,红包金额为10元,

第1个人抢到的金额范围为 (0, 10/10 * 2),平均为1 元。

第2个人抢到的金额范围为 (0, 9/9 * 2),平均为1 元。

...

第10个人抢到的金额范围为 (0, 1/1 * 2),平均为1 元。

代码如下:

import random
from __future__ import division

def average(amount, nums):
    remain_num = nums
    for num in range(nums):
        if remain_num == 1:
            value = amount
        else:
            value = round(random.uniform(0.01, amount/remain_num * 2), 2)
        amount -= value
        remain_num -= 1
        print('第{}个人抢到{}元红包,剩余红包{}元'.format(num+1, value, amount))

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值