最近博主闲来无事发现每次微信抢红包的时候老是得到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元的情况 微信抢红包有微信 需谨慎