Go标准库的新 math/rand

💡 原文中文,约5300字,阅读约需13分钟。
📝

内容提要

Go 1.22将发布新的math/rand/v2包,提供更好的伪随机数生成器和更简单易用的API。新包移除了一些不安全的功能,并进行了重构和改进。此外,还添加了新的源和实现,如PCG-DXSM和ChaCha8。math/rand/v2包适用于模拟等任务,但不适用于对安全性敏感的工作。包级别的函数是线程安全的,但Rand对象是非线程安全的。

🎯

关键要点

  • Go 1.22将发布新的math/rand/v2包,提供更好的伪随机数生成器和更简单易用的API。
  • 新包移除了一些不安全的功能,并进行了重构和改进。
  • math/rand/v2包适用于模拟等任务,但不适用于对安全性敏感的工作。
  • 新包将是第一个在标准库中建立v2版本的包,未来可能会有更多包加入。
  • 提案主要内容包括移除不必要的功能、改进API和添加新的源实现。
  • math/rand/v2的顶层函数是线程安全的,但Rand对象是非线程安全的。
  • 包级别的函数如Int是线程安全的,但自定义Rand对象需注意线程安全问题。
  • 新包引入了PCG-DXSM和ChaCha8等新的伪随机数生成器。
  • math/rand/v2的输出可能在设置种子的方式不同的情况下很容易可预测,适用于非安全性敏感的场景。
  • Rand对象可以包装成一个Source接口,所有伪随机数生成器都可以实现该接口。
🏷️

标签

➡️

继续阅读