您的位置:首页 > 移动开发 > 微信开发

浅谈微信红包的算法

2016-08-20 10:20 190 查看
最近博主闲来无事发现每次微信抢红包的时候老是得到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元的情况 微信抢红包有微信 需谨慎
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: