Skip to content

schworak/php_mt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

php_mt

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.


Features

  • 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

Example

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);

About

A Rust implementation of PHP's MT19937-based random number generator.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors