浅谈微信红包的算法

最近博主闲来无事发现每次微信抢红包的时候老是得到0.01元 

心想会不会是程序把得到的0.01元的概率调高了呢 

额。。额 。。发现并不是 是自己脸黑难过

下面我们来说说微信的红包算法

1.每次抢的红包的最小金额为0.01

2.所以的红包金额等于总金额

3.先抢和后抢概率一样

4.最大的金额数等于总金额数减去最小金额乘以总人数减一

下面我来贴lua的代码

	local allcount=100
	local all_index=10
	local weights={}
	local total=0
	local weight=nil
	for i=1,all_index do
		weight=math.random()
		weights[i]=weight
		total=total+weight
	end

	local balance=allcount
	local count=all_index
	local takes={}
		while (count>0) do
			local weight=weights[count]
			local take=math.ceil(weight/total*allcount)
			take=math.max(1,math.min(take,balance-(count-1)))
			takes[count]=take
			count=count-1
			balance=balance-take
		end
	---------------厉害的微信红包算法 takes以分为单位

	dump(weights)
	dump(takes)
下面我们来看下打印出来的结果

发现果真是我脸黑 看这里就没有出现0.01元的情况  微信抢红包有微信 需谨慎快哭了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值