chromium / chromium / src.git / a17cb3ecef49a078657524cdeaba33ad2083646c / . / third_party / mt19937ar / readme-mt.txt

This is a Mersenne Twister pseudorandom number generator | |

with period 2^19937-1 with improved initialization scheme, | |

modified on 2002/1/26 by Takuji Nishimura and Makoto Matsumoto. | |

Contents of this tar ball: | |

readme-mt.txt this file | |

mt19937ar.c the C source (ar: initialize by ARray) | |

mt19937ar.out Test outputs of six types generators. 1000 for each | |

1. Initialization | |

The initialization scheme for the previous versions of MT | |

(e.g. 1999/10/28 version or earlier) has a tiny problem, that | |

the most significant bits of the seed is not well reflected | |

to the state vector of MT. | |

This version (2002/1/26) has two initialization schemes: | |

init_genrand(seed) and init_by_array(init_key, key_length). | |

init_genrand(seed) initializes the state vector by using | |

one unsigned 32-bit integer "seed", which may be zero. | |

init_by_array(init_key, key_length) initializes the state vector | |

by using an array init_key[] of unsigned 32-bit integers | |

of length key_kength. If key_length is smaller than 624, | |

then each array of 32-bit integers gives distinct initial | |

state vector. This is useful if you want a larger seed space | |

than 32-bit word. | |

2. Generation | |

After initialization, the following type of pseudorandom numbers | |

are available. | |

genrand_int32() generates unsigned 32-bit integers. | |

genrand_int31() generates unsigned 31-bit integers. | |

genrand_real1() generates uniform real in [0,1] (32-bit resolution). | |

genrand_real2() generates uniform real in [0,1) (32-bit resolution). | |

genrand_real3() generates uniform real in (0,1) (32-bit resolution). | |

genrand_res53() generates uniform real in [0,1) with 53-bit resolution. | |

Note: the last five functions call the first one. | |

if you need more speed for these five functions, you may | |

suppress the function call by copying genrand_int32() and | |

replacing the last return(), following to these five functions. | |

3. main() | |

main() is an example to initialize with an array of length 4, | |

then 1000 outputs of unsigned 32-bit integers, | |

then 1000 outputs of real [0,1) numbers. | |

4. The outputs | |

The output of the mt19937ar.c is in the file mt19937ar.out. | |

If you revise or translate the code, check the output | |

by using this file. | |

5. Cryptography | |

This generator is not cryptoraphically secure. | |

You need to use a one-way (or hash) function to obtain | |

a secure random sequence. | |

6. Correspondence | |

See: | |

URL http://www.math.keio.ac.jp/matumoto/emt.html | |

email matumoto@math.keio.ac.jp, nisimura@sci.kj.yamagata-u.ac.jp | |

7. Reference | |

M. Matsumoto and T. Nishimura, | |

"Mersenne Twister: A 623-Dimensionally Equidistributed Uniform | |

Pseudo-Random Number Generator", | |

ACM Transactions on Modeling and Computer Simulation, | |

Vol. 8, No. 1, January 1998, pp 3--30. | |

------- | |

Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, | |

All rights reserved. |