关于美团抽奖的算法问题
ykren 2014-08-04 08:32:17 美团的0元抽奖大家都熟悉吧,最近要做个类似的抽奖,但是没太看懂美团的算法,有谁可以帮我解释解释吗?
美团的抽奖规则如下:
每日收盘时的上证指数 × 每日收盘时的深证成指 × 10000 = 12位数。(指数以证交所公布数字为准);将此12位数的数字倒序排列后(如首位是0,则直接抹去),再除以前一日23:59:59本次活动结束时的参与人数(每个抽奖号为一个人数),得到的余数加1即为获奖号码;若公布时您的“抽奖号”与获奖号码完全一致,就可以获得本次活动的大奖了。
例如
2012-06-11收盘时的上证指数是 2927.08,
2012-06-11收盘时的深证成指是 12926.61,
将这两个数字相乘后再乘以10000得到的12位数为378372215988,
将这12位数的数字倒序排列得到889512273873。
如果截止至2012-06-10 23:59:59活动结束时的抽奖人数为1907899,
以889512273873整除以1907899,商为466226,余数为154699,
用154699+1=154700,获奖即为154700,如果当天需要开多个奖,则用此号码分别+2011 +3011 +4011……得出当天其他获奖号码。
我的问题是:
1、为什么要搞2个指数,1个不行吗?
2、2个指数相乘为什么要取倒序,而不是直接取结果?
3、余数为什么不直接是获奖号码,为什么还要加1?
4、这个算法怎么能保证每个人的中奖概率是均等的?