4.2 升级到 0.6
1分钟内可阅读完
在 0.6 周期中,Rand 在 rust-random 项目下找到了新家。我们已经感到宾至如归,但如果你想帮我们装饰,一个新 logo 将不胜感激!
我们还为面向用户的文档找到了新家——就是本书!
PRNG
我们旧的 PRNG 模块中的所有 PRNG 都已移至新 crate。我们还添加了一个包含 PCG 算法的额外 crate,以及一个包含 Xoshiro / Xoroshiro 算法的外部 crate:
SmallRng
本次更新,我们将 SmallRng 背后的算法从 Xorshift 切换为 PCG 算法(Pcg64Mcg 即 XSL 128/64 MCG,或 Pcg32 即 XSH RR 64/32 LCG,也就是标准 PCG 算法)。
序列
seq 模块已完全重写,Rng trait 中的 choose 和 shuffle 方法已被移除。大多数功能现在可以在 IteratorRandom 和 SliceRandom trait 中找到。
加权选择
WeightedChoice 分布现已替换为 WeightedIndex,通过使功能更通用解决了几个问题。
为方便起见,SliceRandom::choose_weighted 方法(及其 _mut 变体)允许直接将 WeightedIndex 采样应用于切片。
其他特性
SIMD 类型
Rand 现在具有生成 SIMD 类型的初步支持,由 simd_support 特性标志控制。
i128 / u128 类型
由于这些类型现在在稳定版编译器上可用,这些类型会自动得到支持(需要足够新的 Rust 版本)。i128_support 特性标志仍然存在以避免破坏性变更,但已不再有任何作用。