楼主:
LPH66 (-6.2598534e+18f)
2021-03-26 03:26:15※ 引述《Xuelingyu (雪灵羽)》之铭言:
: 影片连结:https://www.youtube.com/watch?v=5Icj5TNmBUI
来简单转述补充一下影片中的解释, 以及加一点我认为 1.17 会造成的影响
====
基本原理是这样的:
Java 内建的乱数产生器 java.util.Random
它的实作是有一定规定的 (专业术语叫做线性同余产生器, LCG)
其特性是: 当你喂入的种子码很接近时
所产生的开头数个乱数的数值也会很接近
特别的, 如果已知种子码差多少的话, 所产生的这些乱数也能够在某种程度上互相推算
反应在所产生的世界就是:
种子码 s+60011 产生的黏土团的特性
和种子码 s+60009 产生的钻石团特性会有很强的关联
强到足以利用其中一个推算另一个, 而其中位置相关的数值正好有个普遍适用的偏移量在
影片中有详细地把程式内部的计算演示一遍给你看
告诉你那些偏移量是如何算出来的
====
要问 1.17 会产生的影响嘛
首先, 还是回到官方给的分布图 https://reurl.cc/Dvq6KQ
注意到右边列在 1.16 旧版的图示中, 钻石的分布是均匀分布的
实际你去找有人统计的钻石矿分布统计图看会看到
y=5 ~ y=12 这一块的分布其实是几乎均匀的
(y < 5 会受基岩生成影响成线性减少, y >= 13 我就不太确定是什么原因就是了...)
但是 1.17 改变生成方式变成越深机率越大
这代表说上面这些乱数产生器的输出不会直接变成矿团性质的数值
而是会进行一些简单的数学运算之后才会变成矿团性质
这些运算有可能会因为多使用了几个乱数而造成参照的乱数不再对应
(我指的是那些三角形分布, 因为三角分布可以借由产生两个均匀乱数相加而得
这甚至是个已经使用在游戏其他地方的方法了;
如果它是使用新的高斯分布的乱数产生器的话
最常见的高斯分布产生算法也是需要由两个均匀乱数转换成两个高斯分布乱数
(关键字: Box-Muller)
总之这样一来, 一边使用一个乱数, 另一边使用两个乱数, 对应就会被打乱)
再加上 8a 减少了钻石矿团露出空气的比例
以及 10a 对钻石矿团的生成算法有较大的改变
就算实际产生的座标还是能够推算, 也很有可能因为这样的改变造成扑空
所以我会认为在 1.17 就算是有可能推算出新版的对应是如何
但实际成功机率应该是会大幅下降的