想弄个公平抽奖的程序,想问问有什么类似彩票这种不太容易操纵的随机数吗

抽奖规则就是每个人先拿到一个编号,在开奖之前,公布总参加人数,等到彩票开奖之后,根据彩票的数字,取余总参加人数,余数加 1 就是得奖的编号。
但是彩票这个开奖频率太低了,有没有其它频率高点的代替?或者其它类似彩票这种,我可以使用多个进行交叉进行

相关文章

41 thoughts on “想弄个公平抽奖的程序,想问问有什么类似彩票这种不太容易操纵的随机数吗

  1. 真的要公平的话,我感觉反而不能使用真正的随机数,而是应该使用可查到但不可预知的事件。

    假设使用彩票作为随机种子,可以加入时间因素,生成结果。

    解决了彩票频率不够高的问题,但是需要在彩票开奖前就固定奖池。

    证券的数据,或者大家的数据作为种子。

    比如指定时间内,参与用户的信息时间选择结合一起产生开奖结果,但是要加入其他因素,可能被控制开奖。提前公布一个秘密数字作为干扰项,开奖后可查。加密密文与密匙。

  2. @whileFalse 我想到也是这个。外加上把开源的算法给复现,这样就可以查验真伪了。

    但是这个预防不了庄家增加虚拟的账户来拉低真实用户的中奖率。(好像没什么东西可以预防)

  3. 别使用那些人家掌握核心科技的如大气质量那样的随机数。。。反正自己不熟悉的领域别用。。。

    最简单的取随机数就是,参与总人数中用伪随机数产出 10 个人取其提交计入数据库 unixnano 时间,其 10 人均值的数作为随机数。

    随机或者指定序号的 10 个人其参与提交时间肯定不能特定的,绝对是不可谋划的,其次是精确到 unixnano 这个级别就算有心谋划,网络延时等都不可避免,所以绝对是不可谋划定制的随机数。

    而是是自己领域内可证实的随机数,而其他大气数据产出的随机数之类你不懂不建议使用,股票基金的系统也不是你写的你也没有做过绝对掌大财富可操控全局的庄家,所以。。。

  4. 大概明白了,觉得随机数不够随机,想让开奖结果更随机一些对吧,像前面人说的,一般取当天某证券指数最后两位做变量值,这已经很公平了,我的想法是可以把最后的参与人数映射到一个⚪上,除以总人数后得到一个角度值,这个时候,取一个随机角度值,如果取两人就加 180°,如果取 6 人就每次加 60°,这样保证了参与人的分布性。当然你也可以考虑取 N 次随机角度值

  5. @kangsheng9527 一般取股票基金啥的,都是取上证或是大型综合指数,这些指数不是几十亿就能决定的,而且不是取所有值,只取小数点最后两位,人为操作可能性接近于无,由于股票最后时间交割会采用集合竞价之类的方式,所以在最后时间的操控难度极大。就算有绝对掌大财富也是不可能控制最后两位小数的

  6. @flowercoder 这个方法极好,而且完全不用公式,非常直观,比如上证指数是 3218.05 ,那么

    如果参与人数少于 100,中奖号码就是 5
    如果参与人数为 100 – 1000 之间,中将号码就是 805
    依此类推。

  7. @cmdOptionKana 这方式就是简单而已,很多人都是你说的这么用的,但是它只能取最后两位,个位数的话最后几分钟的变化概率会降低,比如 14:57 的时候是 8 的话,最可能出现的情况就是 6 、7 、8,所以为了确保它的公平性,只取两位小数。

  8. @flowercoder 确实有局限性,如果从拿号到开奖隔开几个小时就没问题了。另外这个方法在周末等股市不运作的时间段无法使用,如果楼主是节假日搞活动那就要想别的办法。

  9. @zsl199512101234 比如说取开奖前几分钟的全国省会的天气的平均值,这个基本不可能人为控制,应该也可以进行回溯

  10. 这个玩法有点像以前的一元云购,他是直接获取当前最近一期的快乐十分的中奖号码,然后全部号码数字加起来得到总数。

  11. 真随机数对于普通用户来说不可能去验证,具体实现完全看程序良心
    公布种子和算法,虽然不是”真随机”
    但是相对算是一种公开公平

  12. 股票有周末的话:

    交易平台数字货币的价格

    几个不同的数字货币的最新区块的 id 拼到一起再 hash

  13. 这个需求计算机科学家和统计学家们很早就碰到了呀,所以 random.org 解君愁:

    > RANDOM.ORG offers true random numbers to anyone on the Internet.
    > The randomness comes from atmospheric noise, which for many purposes
    > is better than the pseudo-random number algorithms typically used in computer programs.

    他们还提供了免费的 API

  14. 真的需要真随机数吗? 这种面向用户的东西,其实“伪随机数”比“真随机数”更讨人喜欢。

  15. @flowercoder 如果一个不够随机,那就用多个指数,A 股怕人操纵,那就加上美股、日股,我看谁有那么大能量

  16. @reus 不是说操控,我是指比如抢楼活动,要拿上证指数后 3 位作为随机数的话,其实到了 2 点 55,个位数在最后发生随机波动性会降低,如果此时有人发现这个现象再参加这次抽奖活动会对其他人不公平,所以我才强调了只取最后两位小数的说法,楼主强调的不就是公平二字嘛,我的想法也就是想尽量做到每个参与人的抽奖概率都是一样的

  17. “至少每天都要有,股票基金指数有周末” ,那就外汇交易,特定某个时间点的 USD/JPY 汇率数值

发表评论

电子邮件地址不会被公开。 必填项已用*标注