Re: [分享] 如何用数学方法寻找钻石

楼主: 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 就算是有可能推算出新版的对应是如何
但实际成功机率应该是会大幅下降的
作者: twosheep0603 (两羊)   2021-03-26 04:39:00
原来这两个种子生成这么靠近
作者: pupudice (poopoodice)   2021-03-26 04:59:00
作者: Xuelingyu (雪灵羽)   2021-03-26 11:40:00
我就是后面都听不懂才只翻利用方法 L大好强
作者: ZooseWu (N5)   2021-03-26 15:18:00
酷喔
作者: sa080691 (帕森)   2021-03-26 16:14:00
我看我还是乖乖鱼骨好了
作者: espresso789 (espresso)   2021-03-26 17:53:00
原po只说结果就很像迷信,但是这篇的楼主详细解释,变得有科学做作证,故给推
作者: Xuelingyu (雪灵羽)   2021-03-26 20:11:00
疴…楼上我有附影片连结啊,只是因为不懂程式跟数学就没翻了
作者: WinRARdotrar (WinRAR.rar)   2021-03-26 23:56:00
嗯嗯 跟我想的差不多
作者: kosoj6 (不是宅男)   2021-03-27 00:37:00
你是鬼吧= =
作者: starjack2001 (李也鴉信)   2021-03-28 01:38:00
太神辣,这我也只能乖乖下跪拜见大佬了
作者: BlackCoal (居士隐埋偏仕)   2021-03-30 05:52:00
作者: siriusu (かがみは俺の嫁。)   2021-03-31 02:37:00
作者: kaiyo25 (kaiyo)   2021-04-07 12:20:00
推 感谢讲解

Links booklink

Contact Us: admin [ a t ] ucptt.com