bloodstained吧 关注:18,325贴子:126,551
  • 4回复贴,共1

随机种子与随机因子之间的对应关系

只看楼主收藏回复

首先,先把随机种子转为二进制。由于随机数的范围是0-2147483647,所以转成二进制最多有31位。不足31位的话前面用0补足。下图以种子876105719为例,解释8个随机因子和随机数是怎么对应的。

注:1 虽然有些自定义的种子是不可能被游戏生成出来的,但是目前没有发现这些种子有什么特殊效果。
2 看似随机数的二进制是分为前16位和后15位的,但是游戏内的碎片和道具的随机使用的是整个随机数,而不止前16位。也就是说即使你保留了前16位,而改变了一个无关紧要的随机因子(比如传送点和存档点的随机),最后游戏内的碎片和道具分布还是会不一样


IP属地:上海1楼2020-05-14 22:17回复
    @孫六兼元


    IP属地:上海2楼2020-05-14 22:18
    回复
      GJ,本以为要等到明天,洗漱完回来就看到这个,这下可以目标明确地自己写种子数玩了。
      这么看就很直观了,1152种随机配置果然不是平均分配的,这也解释了为何我之前以4为公差进行微调的时候发现箱子固定类型的出现频次明显高太多了。
      这么算下来系统能自动生成的上限只有总数的约1%,千万级,其中全随机的只有65536,如果算上手打全随机就1048576张图,虽然也挺多不过要比我之前猜测的数字少多了。即使考虑到血污玩家群的规模,两位无关玩家各自掷全随机,掷到同一张图撞车的概率还是蛮大的。
      有固定值限制的bdh位可以用来校验一个种子是否属于合法生成(身份证末位?),不过因为目前合法生成的码中也存在卡关这种逻辑硬伤,目前还看不出这几位除了校验之外的功能性。


      IP属地:河南3楼2020-05-14 23:33
      收起回复
        直观化结论之一:
        系统自动生成的全随机种子数是等差数列,通项Seed(n)=9088+32768*n,n∈[0,65535],最大值为2147459968。
        改变任一随机项只需对9088增减固定偏移值:
        ①敌方掉落物品随机、碎片不随机:+1
        ①敌方掉落碎片随机、物品不随机:+2
        ①敌方掉落物品和碎片都不随机:+3
        ②宝箱暗墙中物品位置随机、类型不随机:+4
        ②宝箱暗墙中物品类型随机、位置不随机:+8
        ③商店售货随机:+16
        ④炼金合成与分解随机:+32
        ⑤任务奖励随机:+64
        ⑥关键物品位置互换:+1024
        ⑦通关只需击败巴尔:-4096
        ⑦通关只需击败吉贝尔:-6144
        ⑧存档点和传送点随机:+16384


        IP属地:河南4楼2020-05-15 00:26
        回复