MathGroup Archive 2003

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

Search the Archive

Period of Random and big integers as iterators

  • To: mathgroup at smc.vnet.net
  • Subject: [mg40089] Period of Random and big integers as iterators
  • From: lsczan at concentric.net
  • Date: Wed, 19 Mar 2003 03:24:51 -0500 (EST)
  • Reply-to: lsczan at concentric.net
  • Sender: owner-wri-mathgroup at wolfram.com

Hi,

Mathematica's documentation offers this description for the implementation of
Random: 

- Random uses the Wolfram rule 30 cellular automaton generator for
integers. 
- It uses a Marsaglia­Zaman subtract­with­borrow generator for real
numbers. 

Random is relatively fast. On my machine it it takes 0.321 s to
compute 10^6 (pseudo) random numbers. I am interested how long is the
period for the algorithm used by Random. If the period is, say 2^32,
then my machine would exhaust it in 2^32/10^6 0.321 / 60 = 22.9781
minutes. I made an experiment that apparently exposes some limitations
of Mathematica. 

In[1]:=
SeedRandom[5]

In[2]:=
x = Random[]

Out[2]=
0.786599

In[3]:=
count = 1;

In[4]:=
While[True, 
      count++;
      If[Random[]== x, Print[count]; Break[]]]

Internal counter overflow.
Some expression evaluations may not run to their
final fixed points.  Try redoing your computation
on a 64-bit enhanced version of Mathematica.

It looks like While can go through a limited number of loops.
Similarly, I got the following error for Do. 

In[5]:=
Do[1, {2147483648}]

Do::iterb: Iterator {2147483648} does not have appropriate bounds.

Apparently, the maximum value for the iterator is 2^31-1 = 2147483647,
because 
    Do[1, {2147483648-1}]
actually works.

Does anybody know:

1. What is the period for Random[]?

2. Is it possible to use big integers as iterators in Mathematica?

Thanks,

LS



  • Prev by Date: FILTERING
  • Next by Date: Trouble with an iterative function
  • Previous by thread: FILTERING
  • Next by thread: Re: Period of Random and big integers as iterators