一、活动抽奖算法
Step1:提取当天日期数值对应的所在楼层回复时间信息,作为“基础数据”;
如7月23日(星期一)的报道帖,即提取723楼的回复时间信息;
【说明:2012年8月1日开始,是从801楼起取值。】
Step2:将“基础数据”包含的数字,逐个相加后的结果值,作为“除数”;
假设723楼的回复时间信息为:2012-07-23 06:00:00
即:2 + 0 + 1 + 2 + 0 + 7 + 2 + 3 + 0 + 6 + 0 + 0 + 0 + 0 = 23; 则,“除数”为23。
Step3:将当天的星期数,作为“权值”,对“除数”进行加权;得到“加权除数”;
“权值”加在“除数”之前;即,得到“加权除数”123。
注:星期一至星期天的“权值”对应1~7区间的自然数。
Step4:提取当天总回复楼层的数值(简称“总楼层数”,下同),作为“被除数”;
将“被除数”除以“加权除数”,得到商的小数部分,作为“准备数”;
假设总楼层数是1234楼,即1234 / 123 = 10.03252033…
则“准备数”为03252033…
Step5:依据总楼层数的位数“x”、“准备数”,进行最终“准获奖楼层”的取值;
即,总楼层数是1234楼,则x=4;若是12345楼,则x=5;以此类推;
具体“准获奖楼层”取值规则
(1) 依据“x”的值,取“准备数”自左向右顺序,“x”位的数值,作为“楼层基数”;
即1234楼的“x”= 4;则得到“楼层基数”为0325。
(2) 若“楼层基数”小于总楼层数,则“楼层基数”即为“准获奖楼层”;
如325 < 1234,则325为“准获奖楼层”(诸如“0325”最前面的0,自然消除)。
(3) 若“楼层基数”大于总楼层数,且“x”≤ 4时;
则将“楼层基数”减去总楼层数,得到的结果数值,即为“准获奖楼层”。
(4) 若“楼层基数”大于总楼层数,且“x”≥ 5 时;
则使用0~“权值”区间的自然数,从“权值”开始依次递减替换“楼层基数”左起第1位;
直至获得小于总楼层数的数值,则该数值即为“准获奖楼层”。
注:此过程中,一旦替换后的数值小于总楼层数,则停止后续数值的替换,
当前小于总楼层数的数值,即为“准获奖楼层”。
(5) 若Step4中,“被除数”除以“加权除数”,正好除尽,则商的数值即为“准获奖楼层”。
(6) 若组成“楼层基数”的数值每一位都是0,则商的整数部分的数值即为“准获奖楼层”。
【友情提示】本活动抽奖算法,得出的“准获奖楼层”数值,仅作为活动的数据支持;
最终,该数值对应楼层的用户,是否有资格获得奖品,则依据其在参与具体活动的内容是否有效;
有效性的判定,则依据如下描述的“评奖规则”。
二、评奖规则
1.签到回复内容符合当天的“今日签到抽奖要求”;
2.签到回复内容遵守国家法律法规、遵循论坛管理规则;
3.签到回复内容不得修改(任何修改过的内容,都为无效,不能获奖);
4.符合评奖规则1~3项的,按“准获奖楼层”,对该楼层回复用户进行发奖;
5.不符合评奖规则1~3项的,按“准获奖楼层”数值向后顺延,直至满足1~3项的楼层出现,进行发奖。
6.若按上述第5项描述,一直顺延到当天23点59分59秒的最后一个回复,都未出现满足1~3项的楼层;则按“准获奖楼层”数值向前顺推,直至满足1~3项的楼层出现,进行发奖。
7.若当天所有签到回复都不满足上述1~6项,则当天无获奖用户产生;当天奖励名额作废。
三、活动抽奖算法过程实例演示
2012年7月23日星期一的报道帖的“准获奖楼层”产生过程,如下:
假设该日报道帖总楼层数为1234楼。
Step1:提取723楼的回复时间信息,假设为2012-06:00:00;
Steo2:将时间信息包含的数值,逐位相加:
2 + 0 + 1 + 2 + 0 + 7 + 2 + 3 + 0 + 6 + 0 + 0 + 0 + 0 = 23;得到“除数”23;
Step3:由已知条件“星期一”,得到“权值”为1;继而得到“加权除数”为123;
Step4:由总楼层数 / 加权除数(1234 / 123)=10.03252033…;得到“准备数”03252033…;
Step5:根据总楼层位数为四位,则“x”=4;
根据“准获奖楼层”取值规则(1),得到“楼层基数”0325;
根据(2),得到该日报道帖的“准获奖楼层”为325楼。
下面是管管模拟的2012年7月23日星期一报道帖的数据和产生结果,
比友感兴趣话,一起来尝试演算。
算法挺有创意的。。
就是辛苦了活动人员了。。
好复杂的算法,看都看晕了……
直接靠运气上吧~