作者LPH66 ( )
看板Minecraft
標題Re: [分享] 如何用數學方法尋找鑽石
時間Fri Mar 26 03:26:15 2021
※ 引述《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 就算是有可能推算出新版的對應是如何
但實際成功機率應該是會大幅下降的
--
有人喜歡邊
玩遊戲邊
上逼;
也有人喜歡邊
聽歌邊
打字。
但是,我有個請求,
選字的時候請
專心好嗎?
-- 改編自「古 火田 任三郎」之開場白
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.177.0.237 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Minecraft/M.1616700377.A.570.html
1F:推 twosheep0603: 原來這兩個種子生成這麼靠近 03/26 04:39
2F:推 pupudice: 強 03/26 04:59
3F:推 Xuelingyu: 我就是後面都聽不懂才只翻利用方法 L大好強 03/26 11:40
4F:推 ZooseWu: 酷喔 03/26 15:18
5F:推 sa080691: 我看我還是乖乖魚骨好了 03/26 16:14
6F:推 espresso789: 原po只說結果就很像迷信,但是這篇的樓主詳細解釋, 03/26 17:53
7F:→ espresso789: 變得有科學做作證,故給推 03/26 17:53
8F:→ Xuelingyu: 痾…樓上我有附影片連結啊,只是因為不懂程式跟數學就 03/26 20:11
9F:→ Xuelingyu: 沒翻了 03/26 20:11
10F:推 WinRARdotrar: 嗯嗯 跟我想的差不多 03/26 23:56
11F:推 kosoj6: 你是鬼吧= = 03/27 00:37
12F:推 starjack2001: 太神辣,這我也只能乖乖下跪拜見大佬了 03/28 01:38
13F:推 BlackCoal: 神 03/30 05:52
14F:推 siriusu: 推 03/31 02:37
15F:推 kaiyo25: 推 感謝講解 04/07 12:20