Hasty Briefsbeta

双语

When random is not actually random enough

6 hours ago
  • 使用模运算从集合中随机选择项的常见做法会引入偏差,因为分布不均匀。
  • 更好的方法是使用像random_between(l, h)这样的函数,确保每个项有相等的概率。
  • 像random_choice()这样具有显式概率分布或相对整数权重的通用API更健壮,并能防止错误。
  • 相对整数权重避免了浮点数问题,并允许直观的概率表示。
  • 随机变量有自己的代数;像模运算这样的非线性操作可能会扭曲预期的分布。
  • 在测试中(例如使用Antithesis),显式的加权选择有助于探索代码路径并提高覆盖率。
  • 使用weighted_choice()而不是random_u64()鼓励直接表达期望的分布,从而产生更好的代码。