当随机不够随机:模运算的陷阱

When random is not actually random enough

当随机不够随机:模运算的陷阱

在代码中随手用取模运算(modulo)来从集合中随机选取元素,看似简单直观,实则暗藏玄机。这种做法会破坏原本均匀的概率分布,导致某些选项被选中的几率远高于预期。作为 Antithesis 的用户,我们在测试操作系统时深刻体会到,直接定义概率分布比依赖底层随机数生成器更可靠。与其纠结于 random_u64() 这样的低级 API,不如直接使用 random_choice() 并明确指定相对整数权重。这不仅避免了浮点数精度问题,还能让代码逻辑更清晰,帮助我们在测试中更有效地覆盖关键路径。下次再写随机代码时,不妨问问自己:是否可以直接表达想要的分布?

我认为这是一个典型的案例,证明一个更通用的 API、一个更抽象的 API,实际上能让你的代码更容易推理和编写正确。

同日更多故事

2026-10-06