Bit-for-bit compatible implementation of PHP 7.1+ MT19937 (mt_rand) in Rust.
This crate reproduces the exact output of:
mt_srand(seed)mt_rand()mt_rand(min, max)
for PHP 7.1 and newer.
It is intended for deterministic cross-language compatibility and reproducible test vectors — not for cryptographic use.
- Exact Zend Engine MT19937 constants
- 624-element state array
- 31-bit output for
mt_rand()(matches PHP) - Integer rejection sampling for
mt_rand(min, max) - No floating point scaling
- No external dependencies
- Fully deterministic
use php_mt::PhpMt;
let mut rng = PhpMt::new(1234);
assert_eq!(rng.mt_rand(), 411284887);
assert_eq!(rng.mt_rand_range(0, 100), 20);