今日击败算法
昨天产品上线第一天发现今日击败模块第一天所有人会出现击败0%
原始方案:
今日击败=1-(今日已打卡人数/(今日已打卡人数和昨日打卡人数之间的最大值)
例子:
第一天报名10人
无法打卡
第二天又报名10人 一共20人
第一人:1-(1/1)=0% 第二人: 1-(2/2)=0% 第三人: 1-(3/3)=0% 三人打卡、17人出局
第三天没人报名 一共20人
第一人:1-(1/17)=94% 应该是100%
于是自己想出方案一:
获取报名人数+上一天留下人数
第一天报名10人
无法打卡
第二天又报名10人 一共20人
第一人:1-1/(10+0)=90% 第二人:1-2/(10+0)=80% 第三人:1-3/(10+0)=70%
共计:3人打卡 17人出局
第三天报名50人 一共53人
第一人:1-1/(50+3)=98.1%
这个方案的问题出在这样一来第一人无法为100%永远都不可能
于是出现方案二:
通过切割时间来划分一小时3600秒 打卡持续时间3小时一共10800秒
把用户打卡的时间换算成秒=A
1-A/10800就可以求出今日击败