我不是针对六合彩,我是说所有的抽奖都是渣渣;据我知道的所有抽奖技术上都有作弊内定的可能。
摇奖?可以通过不同重量的乒乓球的来作弊吧?可以收买公证人,直接念一个内定的得奖号码吧?
微博抽奖平台则就更容易,微博的程序可以被作弊吧?代码CTO审核过没有?能够被接受外部做完整数据、算法审核不?
当然,我不是说这些平台抽奖作弊,我只是说它们在技术上存在内定、作弊的可能。
随机抽奖,但是抽奖使用的随机因子究竟是真·随机,还是人为内定,统统不能接受第三方的验证!!!
当年百团大战的时候,美团力推的抽奖算法才算是为公正做出了表率,它是利用每天的上证指数、深证成指的收盘数来作为随机因子!
股票指数总无法被操作吧?很可惜,这是可能的:
2012年6月份上旬的时候,就有人对上证指数连续3次出现“特殊数字”做出了技术分析。
而且,美团的抽奖算法亦没有解决另一个问题,即参与抽奖者的数据的问题,我参加了一个抽奖,我怎么知道其他参与抽奖的人是真人,还是机器人呢?
假设有10万真实用户参与抽奖,每次开奖的时候,美团完全可以在后台创建多10万个僵尸用户来参加抽奖,那么即便使用股票指数作为随机因子是公正的,每次抽奖依旧有一半的概率抽中美团自己。
(我当然不是说美团抽奖有内幕;我只是说,如果有内幕,外部是无法检验的!我们只能天真浪漫的相信美团一定不会作弊。)
但是,我们完全可以使用算法规则来规避掉这些问题。
其中关键,便是利用hash哈希算法的离散性替代随机性。
我在我的微信公众号“玩家翁伟”搞了一次抽奖:
- 想要参与抽奖的用户,必须《风味无国界,好吃就是硬道理!我要抽个奖~》一文中留言。
- 用户的昵称 + 留言内容的md5哈希值构成一个“抽奖号码”
像得奖网友张花花,她的留言便是:
md5("张花花去苍蝇馆子,吃最地道的四川干锅,绝对比火锅友好。还有柳州的干拌炒煮螺蛳粉,只有当地的地道啊") =7de5f1f4b7e48bc24edcdad26dba864b
留言这样的方式,亦解决了抽奖数据公开、可验证的问题;参与抽奖者,必须留言;而所有人都可以看到所有的留言;也就是说,大家都可以算出来所有参与抽奖的人的“抽奖号码”;也可以验证参与抽奖的是真人(至少有公开的微信号!),而不是平台生成的抽奖者。
那么,哪个抽奖号码才是中奖号码呢?
这里,我就借用“证监会行业 > 社会服务业 > 餐饮业 六只股票”的“股票代码+成交量+成交额”的哈希值来抽。
要完整的控制一个板块的股票交易量、成交额等几乎是不可能的,而且还会取哈希值,任何一位数字的变化,哈希的离散性都会使得中间号码产生极大偏移,也就是说,几乎无法做任何人为控制。
上周五餐饮业板块的交易情况如下:
md5("sh603043 12,656 3,171.85
sz000008 0 0
sz000721 105,604 4,416.77
sz000796 57,330 4,113.73
sz002186 3,858 462.98
sz002306 25,703 788.43")=7f877137b1f99f78dcbb177725ad2641
此次最靠近中奖哈希的便是张花花的“抽奖号码”了:)
别的用户昵称 + 留言计算出来的md5哈希值都比张花花的距离中奖哈希值更远。
点击这里查阅完整的留言信息以及算出中奖者的代码;史上最公正的抽奖算法就是要做到数据、代码全公开!可验证!
年会抽奖怎么办?
年会抽奖的话,显然就不可能使用股票数据来做随机因子;但还是那句话,算法的核心是:
利用hash哈希算法的离散性替代随机性
年会的时候,写个小程序
- 大家留言写祝语
- 名字 + 祝语为“抽奖号码”
- 祝语都可以投在大屏幕上(抽奖数据可验证)
- 抽奖截止时,所有人的工号 + 祝语按工号排序凑成一个大字符,计算出来中奖哈希
这样的年会抽奖,是一定不需要CTO现场审核代码的 :)