跳至內容
切換側欄
搜尋
建立帳號
登入
個人工具
建立帳號
登入
用於已登出編輯者的頁面
了解更多
貢獻
討論
導覽
首頁
近期變更
隨機頁面
MediaWiki說明
工具
連結至此的頁面
相關變更
特殊頁面
頁面資訊
正在編輯「
粒子探測器
」
頁面
討論
臺灣正體
閱讀
編輯
編輯原始碼
檢視歷史
更多
閱讀
編輯
編輯原始碼
檢視歷史
於 2024年9月2日 (一) 17:22 由
Njes9701
(
留言
|
貢獻
)
所做的修訂
(
→原理
)
(
差異
)
←上個修訂
|
最新修訂
(
差異
) |
下個修訂→
(
差異
)
警告:您目前正編輯頁面的舊修訂版本。
若您發布,在此修訂之後變更的任何內容將會遺失。
警告:
您尚未登入。 若您進行任何的編輯您的 IP 位址將會被公開。 若您
登入
或
建立帳號
,您的編輯將會以您的使用者名稱標示,並能擁有另外的益處。
防垃圾訊息檢查用。
請勿
填寫此欄位!
[[檔案:Mess Detector.webp|縮圖|粒子探測器]] 粒子探測器,通過一系列的紅石裝置測量了TNT點燃跳起時的隨機角度反向計算Math.random的種子碼 可用於預測MINECRAFT內所有隨機事件的發生。<blockquote>此機器擁有100%的預測正確率,該機器也極度敏感,只要有一玩家在任何一個維度的一個角落中吃了食物並且產生出食物碎屑粒子該機器就可以檢測這個世界有人吃食物了!</blockquote> == 內部結構 == * 48-bit 乘法器 * 12-bit 乘法器 * 累計加法器模組 * TNT角度偵測器 * 十六進位to十進位轉換器 * 7個 8bit 記憶體 == 原理 == Minecraft本身運用的隨機數產生法是Linear Congruential generator(LCG)線性同餘生成器 公式為:seed_new = (seed_current * a) + b (mod m) java中使用的參數為:a = 25214903917 、 b = 11 、 m = 2^48 而最後輸出隨機種子碼,但只會有高位前32bit輸出 LCG在隨機數生成中具有一定的隨機性,但其內部的結構使得它可預測,這些可預測性可以被利用來進行破解 以下是LCG的幾個弱點。 * '''低位比特的重複性:''' 在LCG的生成過程中,低位比特往往具有高度的重複性,這代表著相同的低位比特可能會在不同的隨機數中反覆出現,Java通過僅輸出高位的32位來減少這種重複性對隨機性的影響,然而,低位的這種重複特性依然存在,在某些情況下可被利用進行破解。 * '''行列式弱點:''' 假設使用n×n的矩陣來表示LCG的輸出,其中每一行代表連續n次的LCG調用結果。當計算這個矩陣的行列式時,其結果會是k*m^(n-1)的形式,這裡的k是一個整數。如果k等於1,則這些向量可以生成LCG後續所有可能的點,這代表著這些點之間的關係是可預測的,並且可以通過數學方法來逆向推導出最初的隨機種子。 * '''網格結構:''' 當LCG的結果被繪製在二維或更高維度的空間中時,它們往往會形成一個網格狀的結構,這種結構看起來並不隨機。這種網格特性使得它在視覺上表現出規則性,而這種規則性正是在破解中所利用的關鍵。通過分析這些網格,我們可以推導出LCG的內部狀態,進而反推LCG的隨機數生成過程。 這台機器有一個半徑120格的圓形區域,且在周圍放上了692個偵測器用於偵測TNT隨機發射角度,每次偵測都會發射7顆TNT來偵測角度,拿到7個角度後進行反向計算出隨機種子碼,組成一個7維的超立方體,接下來就開始使用線性代數進行破解。
摘要:
請注意,所有於華麥百科所做的貢獻會依據CC BY-SA(創用CC 姓名標示─相同方式分享)授權條款發佈(詳情請見
說明:版權
)。若您不希望您的著作被任意修改與散佈,請勿在此發表文章。
您同時向我們保證在此的著作內容是您自行撰寫,或是取自不受版權保護的公開領域或自由資源。
請勿在未經授權的情況下發表文章!
取消
編輯說明
(在新視窗開啟)