
transcript
show notes
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` 作为随机种子适合头像这类非安全场景,但绝不能替代安全用途的随机数来源。
推荐理由:
这是一篇典型的“从旧系统细节读懂现代工程原则”的文章:一个默认头像选择功能,串起了蓄水池抽样、流式数据处理、并发变化下的稳健性、性能保护与安全随机性边界。它也提醒我们,数学上的均匀随机并不等于工程上的无限制公平——资源上限会悄然重塑算法的实际行为。作为「Andrej Karpathy的RSS订阅清单」精选文章,值得技术读者从原文出发,深入理解这一经典设计。
---
「Andrej Karpathy的RSS订阅清单」为您精选全球最前沿的AI技术博客文章,深度剖析技术背后的核心洞察。
由 voieech.com 提供技术支持。





