#random #rand #rng #mt

no-std rand_mt

Reference Mersenne Twister random number generators

4 stable releases

4.1.1 Dec 2, 2021
4.1.0 Nov 22, 2021
4.0.1 Feb 25, 2021
4.0.0 Dec 27, 2020
2.0.0 Mar 15, 2020

#86 in Algorithms

Download history 11/week @ 2021-09-26 13/week @ 2021-10-03 16/week @ 2021-10-10 12/week @ 2021-10-17 35/week @ 2021-10-24 27/week @ 2021-10-31 67/week @ 2021-11-07 75/week @ 2021-11-14 670/week @ 2021-11-21 561/week @ 2021-11-28 180/week @ 2021-12-05 352/week @ 2021-12-12 170/week @ 2021-12-19 337/week @ 2021-12-26 256/week @ 2022-01-02 200/week @ 2022-01-09

984 downloads per month
Used in palette

MIT/Apache

155KB
5K SLoC

rand_mt

GitHub Actions Discord Twitter
Crate API API trunk

Implemenents a selection of Mersenne Twister random number generators.

A very fast random number generator of period 219937-1. (Makoto Matsumoto, 1997).

The Mersenne Twister algorithms are not suitable for cryptographic uses, but are ubiquitous. See the Mersenne Twister website. A variant of Mersenne Twister is the default PRNG in Ruby.

This crate optionally depends on rand_core and implements RngCore on the RNGs in this crate.

Usage

Add this to your Cargo.toml:

[dependencies]
rand_mt = "4.1"

Then create a RNG like:

use rand_mt::Mt64;

let mut rng = Mt64::new_unseeded();
assert_ne!(rng.next_u64(), rng.next_u64());

Crate Features

rand_mt is no_std compatible. rand_mt has several optional features that are enabled by default:

  • rand-traits - Enables a dependency on rand_core. Activating this feature implements RngCore and SeedableRng on the RNGs in this crate.
  • std - Enables a dependency on the Rust Standard Library. Activating this feature enables std::error::Error impls on error types in this crate.

Mersenne Twister requires ~2.5KB of internal state. To make the RNGs implemented in this crate practical to embed in other structs, you may wish to store the RNG in a Box.

Minimum Supported Rust Version

This crate requires at least Rust 1.47.0. This version can be bumped in minor releases.

License

rand_mt is distributed under the terms of either the MIT License or the Apache License (Version 2.0).

rand_mt is derived from rust-mersenne-twister @ 1.1.1 which is Copyright (c) 2015 rust-mersenne-twister developers.

Dependencies

ma