logo NodeSeekbeta

关于论坛抽奖机制的原理,通俗版

有一个有争议的帖子,因此单独开个帖子解释下论坛抽奖的原理
详细版可以参考这个帖子:https://www.nodeseek.com/post-92-1

先说结论

论坛抽奖工具是完全基于密码学原理,几乎无法通过技术手段预知结果,也无法人为操纵结果的

通俗版原理

论坛抽奖会使用cloudflare随机信标作为随机种子,来把抽奖的楼层编号(去重后)生成一个排序A,排在前面的就是优先中奖的,根据奖品数目取前n个。为了可读性,会把这n个楼层编号从小到大显示,来展示给用户。
cloudflare随机信标每隔30s产生一次,无法提前获知,因此如果两次抽奖的时间一样,并且总楼层数目一样,那么抽到的楼层是一样的(本质是排序A一样)。
如果把抽奖当成一个函数,那么输入是时间和总楼层的,只要输入一样,输出就一样。

具体到这个抽奖贴

最初商家是用一次抽奖按照楼层来发奖品,这里我们看过后觉得有问题,因为排序A在展示给用户前,为了方便找到自己会按照楼层序号排序,所以一定是小楼层获得前面的奖品。为了公平起见,我们建议通过多个抽奖链接来抽,且错开一分钟。

实际操作的时候,因为活动太多可能没留意,把时间设为了错开1秒,因为同样在30s内,随机种子一样,再加上开奖时间一样,会导致同一个帖子内多个抽奖的排序A一样。参考大家的意见已经按照正确的错开时间来开奖。

除了同一个帖子内多个抽奖链接同时开的问题,还有一个之前问题是多个抽奖帖子,只要开奖时间一样,中将楼层的编号是一样的,不过因为无法提前知道楼层因此没有实际影响。

未来的改动计划

这种同一个帖子抽多个且开奖时间一致的情况属于很少的情况,为了避免这种情况出现类似尴尬,降低抽奖的心智门槛,会对抽奖工具做微调。
原有的抽奖链接不会改变,结果还是可以看到,会增加一个新的抽奖工具入口,开发部署之后的抽奖会按照新的抽奖工具,用于解决少数的抽奖需求
计划的抽奖模型变动如下:

  • 默认去重且不可更改
  • 随机种子增加帖子id
  • 随机种子增加时间戳
  • 可以增加一个单独的参数加入到种子,比如 奖品1, 奖品2
  • 可能会把所有楼层内用户id拼接后作为种子的hash数据来源之一(待定)
  • 去掉抽奖者自身,就不用自动下延的土办法了

当前的使用建议

由于到新版本抽奖工具上线还有一定时间,在此之前的小建议:

  • 一般抽奖直接用即可
  • 同一个帖子内抽多个不同奖品,建议用多个链接,且时间分隔1分钟以上

最后

抽奖只是一个活跃气氛,让节日变得更有氛围的手段,不要因为抽奖而影响心情,鸡腿同理 ac11

12
  • 很公平,支持

  • 虽然中奖了也是挂探针,但是真的想中奖

  • bbd

  • xhj023 中奖绝缘体路过

  • ddd不缺鸡,但想中奖是真的

  • 随机种子增加帖子id
    随机种子增加时间戳

    这两个,还以为之前就有呢

  • 确实,如果同个帖子,要抽多个奖品,用同一个链接,设置多个奖品更合理些,这样可以去重,不会让同一用户在同一个链接中重复中奖

  • @katorly #4

    一直都能正常用,就会因为惰性一直不太想改,改了要存在两个抽奖链接的模式,有时候解释起来有点烦

  • 可以,慢慢完善的过程

    我比较菜都是rand(1-楼层数)

    感觉好用方便 ac01

  • 好好好,以后多黑幕我 ac08

  • 没必要为抽奖的事情不开心

  • 没逝 反正中奖绝缘体

12

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有60086位seeker

🎉欢迎新用户🎉