Documentation ¶
Overview ¶
Package mt19937 is a pure-go implementation of the 64bit Mersenne Twister pseudo random number generator (PRNG). The Mersenne Twister, developed by Takuji Nishimura and Makoto Matsumoto, is, for example, commonly used in Monte Carlo simulations. The implementation in the mt19937 package closely follows the reference implementation from
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt64.html
and, for identical seeds, gives identical output to the reference implementation.
The PRNG from the mt19937 package implements the rand.Source interface from the math/rand package. Typically the PRNG is wrapped in a rand.Rand object as in the following example:
rng := rand.New(mt19937.New()) rng.Seed(time.Now().UnixNano())
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type MT19937 ¶
type MT19937 struct {
// contains filtered or unexported fields
}
MT19937 is the structure to hold the state of one instance of the Mersenne Twister PRNG. New instances can be allocated using the mt19937.New() function. MT19937 implements the rand.Source interface and rand.New() from the math/rand package can be used to generate different distributions from a MT19937 PRNG.
This class is not safe for concurrent accesss by different goroutines. If more than one goroutine accesses the PRNG, the callers must synchronise access using sync.Mutex or similar.
func New ¶
func New() *MT19937
New allocates a new instance of the 64bit Mersenne Twister. A seed can be set using the .Seed() or .SeedFromSlice() methods. If no seed is set explicitly, a default seed is used instead.
func (*MT19937) Int63 ¶
Int63 generates a (pseudo-)random 63bit value. The output can be used as a replacement for a sequence of independent, uniformly distributed samples in the range 0, 1, ..., 2^63-1. This method is part of the rand.Source interface.
func (*MT19937) Read ¶
Read fills `p` with (pseudo-)random bytes. This method implements the io.Reader interface. The returned length `n` always equals `len(p)` and `err` is always nil.
func (*MT19937) Seed ¶
Seed uses the given 64bit value to initialise the generator state. This method is part of the rand.Source interface.
func (*MT19937) SeedFromSlice ¶
SeedFromSlice uses the given slice of 64bit values to set the generator state.