雷蒙德·陳(Raymond Chen)揭示了 Windows XP 選取預設個人資料圖片的演算法細節。系統使用由 GetTickCount 初始化的 RtlRandomEx 函式,執行一次通過的蓄水池抽樣演算法來決定圖片。該實作設定 100 張圖片的安全上限,並依賴 RtlRandomEx 隨機數生成器的特定行為,在單次迭代中直接決定選取的索引。

事件背景

蓄水池抽樣(Reservoir sampling)是一類隨機演算法,用於從包含 n 個項目的列表中隨機選取 k 個項目,其中 n 可能非常大或未知。在此特定情況下,k 等於 1,表示該演算法無需先計算所有項目,即可從未知的或變更中的檔案集中選取恰好一個項目。

社群觀察

社群成員讚賞陳對 Windows 內部機制的詳細說明,部分讀者表示了解這些底層細節很有價值。另有評論者分享了使用反累積分佈函數(inverse CDF)抽樣的優化實作,以減少隨機數生成器的呼叫次數。