
← Andrej Karpathy的RSS订阅清单eergisteren · 6 min
Windows XP的隐藏限制首次披露:第101张图机会为零
Windows XP的隐藏限制首次披露:第101张图机会为零
Windows XP 为新用户挑选默认头像时,没有采用“先计数、再随机定位”的两遍扫描,而是在一次目录遍历中实现了严格的均匀随机选择。本文从这一看似细小的系统设计切入,拆解蓄水池抽样如何在未知文件总数的情况下,让每张图片拥有相同的入选概率。
更值得关注的是,XP 的实现并非只有优雅的算法:它最多只处理前 100 张合格图片。第 101 张及之后的文件将完全失去被选中的机会。这篇节目将带你理解算法正确性、文件系统变化窗口、性能边界与安全随机数之间的工程权衡;欢迎结合原文阅读,获得更完整的历史细节。
原文链接:
https://devblogs.microsoft.com/oldnewthing/20260909-00/?p=112683
原文标题:What algorithm did Windows XP use to choose your initial user picture?
主要内容:
• Windows XP 使用蓄水池抽样(k=1)一次遍历图片目录,无需预先知道文件总数。
• 遍历第 n 张图片时,以 1/n 的概率让它替换当前候选项,最终每张已遍历图片的入选概率均为 1/n。
• 单遍扫描不仅减少文件系统访问,还避免了两次扫描之间目录增删导致计数与结果不一致的问题。
• XP 为防止海量文件拖垮性能,设置了最多采样 100 张图片的硬上限。
• 当合格图片超过 100 张时,只有遍历顺序中的前 100 张有机会入选;第 101 张及之后的概率为零。
• `GetTickCount` 作为随机种子适合头像这类非安全场景,但绝不能替代安全用途的随机数来源。