V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
guhuaiyu
V2EX  ›  Java

好奇一个事,博彩网站上的那些随机数生成机制是什么

  •  
  •   guhuaiyu · Nov 29, 2018 · 6487 views
    This topic created in 2705 days ago, the information mentioned may be changed or developed.
    20 replies    2018-11-29 20:17:04 +08:00
    F1024
        1
    F1024  
       Nov 29, 2018
    菠菜网有随机数?活久见
    SeaRecluse
        2
    SeaRecluse  
       Nov 29, 2018
    张口就来,正则枚举
    anteros
        3
    anteros  
       Nov 29, 2018
    1.大家都是人,有趋利避害的天性,所以追求公平与安全,可以推导出没人愿意相信一个没有公信力的开奖结果
    2.事实上也是如此,大多数的菠菜项目的开奖结果,都是以一个公众能方便查询到的,且有公信力的,且与本菠菜平台没有利益相关的事物。例如私菜大多数是以福菜的开奖结果为结果,还有一些是以 QQ 的在线人数统计为开奖结果。
    3.最重要的一点是共识,大家相信的且无异议的开奖,才是正常的,不然没人敢去玩。比如线下,那叫眼见为实,亲眼所见就在面前,线上,全世界人民都能查到某一期的某一次开奖,都没有差别。
    ipoh
        4
    ipoh  
       Nov 29, 2018
    比特币的最新区块 hash
    zpxshl
        5
    zpxshl  
       Nov 29, 2018 via Android
    @php01 但是那些在线纸牌游戏呢。。。
    Cbdy
        6
    Cbdy  
       Nov 29, 2018   ❤️ 1
    可以考虑用当前的上证指数、纳斯达克指数
    yang3121099
        7
    yang3121099  
       Nov 29, 2018
    @Cbdy 还有一些网站参考美元汇率,比特币汇率什么的
    imn1
        8
    imn1  
       Nov 29, 2018
    性感荷官在后面掷色子决定的
    slimhigh
        9
    slimhigh  
       Nov 29, 2018   ❤️ 6
    生成*真*随机数是很困难的一件事情。一般各种语言里面提供的 `random()` 函数都是生成的伪随机数。`random()`的底层实现实际上是一个数学公式,例如,这个公式接收一系列初始值,然后根据这个初始值就可以生成一个数列,每次`random()`函数获取的随机数,不过是取这个数列中的一项。伪随机数的安全关键点在于,初始值的选择,一旦别人猜出你的初始值,就可以知道你后面要生成的所有伪随机数。
    有很多人初始化随机数种子喜欢使用当前时间戳,但是要注意使用这种方式生成的随机数不能用于安全相关的场景,例如用它来生成每期的中奖号码。黑客可以根据的使用的编程语言,知晓伪随机数的公式,然后根据你大概的执行时间,来尝试初始化这个公式,根据历史号码对比,得出你使用的初始化时间戳,从而获得以后的中奖号码。
    为了使伪随机数不可预测,选择合适的初始化参数至关重要,初始化参数要不可预测,也就是说要*真*随机。一般来说安全的方式是使用`/dev/random`( Linux 系统)设备产生的随机字节数据。`/dev/random`中的数据来源于计算机硬件设备的环境噪声,例如放大电路的热噪声,因此`/dev/random`中的数据非常非常难以预测,接近于*真*随机数,各种编程语言中大部分涉及加密的函数库,初始化参数都会用到`/dev/random`的数据。
    不过`/dev/random`在虚拟机环境下可能不是十分安全,例如在 AWS、阿里云这种云平台场景下,所有的虚拟机设备都是虚拟化出来的,导致`/dev/random`的数据可能会被猜测出来。这中情况下需要考虑别的*真*随机数生成方式,例如专门的随机数生成硬件设备,或者使用像 random.org 这样的服务,random.org 的随机数据来自于地球的大气噪声。
    widdy
        10
    widdy  
       Nov 29, 2018
    不都是用户和平台各自生成一个种子,然后将种子 hash 发送给对方,最后双方拿种子开奖的么。
    lsido
        11
    lsido  
       Nov 29, 2018 via Android
    所以你是说系统彩随机开号吗?
    还能什么机制,就是你想的那种最简单的
    anteros
        12
    anteros  
       Nov 29, 2018
    @zpxshl 目前的在线棋牌类游戏,也都是房卡游戏了,也就是说,是自己几个熟人之间去玩,相当于约好一起去麻将馆打牌,只是这个麻将馆是在线上。
    jasonyang9
        13
    jasonyang9  
       Nov 29, 2018
    @slimhigh #9 rndg 服务就是做这个事情的,Hardware RNG Entropy Gatherer Daemon
    guhuaiyu
        14
    guhuaiyu  
    OP
       Nov 29, 2018
    guhuaiyu
        15
    guhuaiyu  
    OP
       Nov 29, 2018
    @F1024 我是说类似那种分分彩,一分钟开一期,五个数字,好奇这组数据是怎么来的
    guhuaiyu
        16
    guhuaiyu  
    OP
       Nov 29, 2018
    @imn1 有种分分彩,一分钟开一期,性感荷官摇得过来吗
    F1024
        17
    F1024  
       Nov 29, 2018
    @guhuaiyu
    这个一般是用的地方彩的数据
    不是网站自己发明的彩票 这样的话别人不会去玩的
    petelin
        18
    petelin  
       Nov 29, 2018
    可以这么解决, 用户上传一个种子, 然后菠菜拿一个私钥和一个数据(比如时间戳)对着个种子加密之后用一定的算法的出来一个数. 用户可以用公钥去验证这个数是不是这么开出来的.
    区块链还是有价值的
    phpcxy
        19
    phpcxy  
       Nov 29, 2018
    在线纸牌发牌的随机算法呢?
    ranleng
        20
    ranleng  
       Nov 29, 2018
    我记得原来有个菠菜网是给出算法,
    每天给出两个种子, 第二天给出前一天的第三个种子,
    然后用户可以按照算法+三个种子 推算所有游戏的结果,

    感觉没什么漏洞,
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5990 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 88ms · UTC 01:55 · PVG 09:55 · LAX 18:55 · JFK 21:55
    ♥ Do have faith in what you're doing.