MathGroup Archive 2003

[Date Index] [Thread Index] [Author Index]

Search the Archive

Marsaglia RNG in Mathematica

  • To: mathgroup at smc.vnet.net
  • Subject: [mg38958] Marsaglia RNG in Mathematica
  • From: "flip" <flip_alpha at safebunch.com>
  • Date: Wed, 22 Jan 2003 06:14:11 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

Hello All,

I was wondering if someone here would be nice enough to convert this C to
Mathematica code.  A module would be best I suppose, so users can just call
it just like Random[].

I'd like to experiment with this RNG in Mathematica.  In fact, IIRC Mathematica uses some variant of SWC also.

Thank you to anyone that can help.

Flip    (remove "_alpha" to email me directly)

By the way, the following words are from another thread in another NG
regarding a RNG.

***  Words below from Dr. Marsaglia ***

Here is a MWC example with period 3056868392^33216-1, a mere
10^4005 times as long as that of the Mersenne twister, yet faster,
far simpler, and seemingly at least as well-performing in tests
of randomness:

static unsigned long Q[1038],c=362436;

unsigned long MWC1038(void){
static unsigned long i=1037;
unsigned long long t, a=611373678LL;
t=a*Q[i]+c; c=(t>>32);
if(--i) return(Q[i]=t);
i=1037; return(Q[0]=t);
                           }

You need to assign random 32-bits seeds to the static array Q[1038]
and to the initial carry c, with 0<=c<61137367.

George Marsaglia





  • Prev by Date: RE: perturbing constant in Para plots
  • Next by Date: Zero over zero, how many numbers?
  • Previous by thread: RE: Solutions for functions containing jump discontinuities
  • Next by thread: Re: Marsaglia RNG in Mathematica