雀魂吧 关注:186,849贴子:3,948,813
  • 5回复贴,共1

关于“伪随机”的科普

取消只看楼主收藏回复

今早又看到了有吧友关于伪随机的帖子,决定来科普一下“伪随机”。内容主要根据我之前学的《计算物理》,如有说得不对的地方还请指出


IP属地:上海1楼2023-08-16 10:42回复
    随机数在很多游戏里经常被用到,例如在雀魂里可以根据随机数来生成牌山、在抽卡游戏里随机数来决定你抽卡的结果等等。最基本、最普适的随机数生成器是随机生成0~1之间均匀分布的随机数,有了这个基本工具,人们可以通过各种方法来实现你具体想实现的事情。最简单的一个例子就是比如你要模拟一个骰子的结果,那你就把这个0~1的随机数乘6然后取整。


    IP属地:上海2楼2023-08-16 10:43
    回复
      真正的随机数生成器,人们当然是无法预测下一次产生的随机数具体是多少的。但任何计算机程序(当然包括生成随机数的程序)没有什么东西是随机的,它只是严格执行人们预先设计好的流程。对于给定的输入,计算机程序每次必定能得出固定的输出(如果不固定的话说明你的电脑坏了)。也就是说对于任何计算机生成的随机数,理论上可以预测它每次产生的随机数的具体值,所以这叫做“伪随机数”。任何由计算机产生的随机数,都是“伪随机数”。


      IP属地:上海3楼2023-08-16 10:44
      回复
        计算机实现的随机数生成器,基本都是给定一个数(这个数叫做“种子”),然后对它进行一系列操作后,就能给出一个或者一系列随机数。因此随机数生成器包含了两个主要部分,一个是“种子”,另一个是生成算法(也就是那一系列“操作”)。对于种子,可以是你喜欢的任何数字,比如当前的时间、某一地区的温度、或者你自己随便在键盘上乱码的一个数。对于后续的生成算法,则是随机数生成器的核心,这个算法保证了产生的随机数的质量。


        IP属地:上海4楼2023-08-16 10:45
        回复
          上面说到随机数生成器的“质量”,是有一系列标准来评判一个随机数生成器的质量的,比如重复性、关联性、速度等等。只要质量够好,伪随机数生成器完全可以拿来正常使用,因为它在统计意义上跟真随机数没什么差别。


          IP属地:上海5楼2023-08-16 10:46
          回复
            虽然计算机生成的随机数都是“伪随机”数,但是作为不知道种子、不知道生成算法的用户来说,随机数的结果是不可预测的,因此质量够好的伪随机数完全可以正常使用。你要是有能力黑进猫粮的服务器,拿到雀魂的源代码,那你就可以预测每次开局的牌山,也可以预测你每次抽卡的结果。


            IP属地:上海6楼2023-08-16 10:46
            收起回复