Pages

Wednesday, February 10, 2010

Mersenne Twister to the Rescue

For Art Evolver I'd like to add a Perlin noise function. The problem with doing this in javascript is the noise is unstable from generation to generation because you can't specify a seed value for Math.random().

Luckily there was an existing implementation of a pseudorandom number generator in javascript here (it's an implementation of Mersenne Twister. The problem with this code is that its functions and state variables are all in the global namespace. Meaning you can only have one generator. I need an arbitrary number of them at any given time, so I wrapped Makoto Matsumoto and Takuji Nishimura's code in a namespace.

Now I can use it like so:
var m = new MersenneTwister(123);

// now calling m.random() four times should return
// the following sequence:
// 2991312382
// 3062119789
// 1228959102
// 1840268610

The namespaced Mersenne Twister code is here.

4 comments:

  1. The article "Mersenne Twister to the Rescue" on DashDashVerbose provides a clear and engaging explanation of how the Mersenne Twister algorithm can be used to generate high-quality random numbers in programming. chimney sweepers augusta georgia

    ReplyDelete

  2. If you find yourself wondering whether Am i a Candidate For LASIK, it's essential to evaluate several factors that determine candidacy. Typically, suitable candidates are individuals who have stable vision and are above the age of 18. Furthermore, it’s crucial that your eyesight hasn't changed significantly in the past year.

    Additionally, you should be free from certain eye conditions, such as severe dry eyes, glaucoma, or cataracts, which could complicate the procedure or affect your healing process. Overall, a comprehensive eye examination is advisable to assess your unique situation and establish whether LASIK is a viable option for you.

    ReplyDelete