Updating to 0.6

During the 0.6 cycle, Rand found a new home under the rust-random project. We already feel at home, but if you'd like to help us decorate, a new logo would be appreciated!

We also found a new home for user-centric documentation — this book!


All PRNGs in our old PRNG module have been moved to new crates. We also added an additional crate with the PCG algorithms, and an external crate with Xoshiro / Xoroshiro algorithms:


This update, we switched the algorithm behind SmallRng from Xorshift to a PCG algorithm (either Pcg64Mcg aka XSL 128/64 MCG, or Pcg32 aka XSH RR 64/32 LCG aka the standard PCG algorithm).


The seq module has been completely re-written, and the choose and shuffle methods have been removed from the Rng trait. Most functionality can now be found in the IteratorRandom and SliceRandom traits.

Weighted choices

The WeightedChoice distribution has now been replaced with WeightedIndex, solving a few issues by making the functionality more generic.

For convenience, the SliceRandom::choose_weighted method (and _mut variant) allow a WeightedIndex sample to be applied directly to a slice.

Other features

SIMD types

Rand now has rudimentary support for generating SIMD types, gated behind the simd_support feature flag.

i128 / u128 types

Since these types are now available on stable compilers, these types are supported automatically (with recent enough Rust version). The i128_support feature flag still exists to avoid breakage, but no longer does anything.