MathGroup Archive 1996

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

Search the Archive

SeedRandom oddity/flaw/bug/imperfection

  • To: mathgroup at smc.vnet.net
  • Subject: [mg5238] SeedRandom oddity/flaw/bug/imperfection
  • From: brech at vision.ee.ethz.ch (Christian Brechbuehler)
  • Date: Fri, 15 Nov 1996 03:33:53 -0500
  • Organization: Image Science Lab, ETH Zurich
  • Sender: owner-wri-mathgroup at wolfram.com

Dear readers of comp.soft-sys.math.mathematica,

I would like to bring to your attention a flaw I suspect in seeding
the integer random number generator of Mathematica.  This is for your
information -- I mailed it to support at wolfram.com
  $VersionNumber -> 2.2
  $Version -> Solaris 2.2 (April 28, 1993)

Symptom
-------
Random[Integer, {...}] ignores some of the bits of the seed that was
previously given to SeedRandom[...].  Example:

  SeedRandom[3]
  Table[Random[Integer,{0, 99}], {5}]     ->    {94, 88, 87, 55, 30}
  SeedRandom[131]
  Table[Random[Integer,{0, 99}], {5}]     ->    {94, 88, 87, 55, 30}


Regularities
------------
I found the following patterns in the influence of the sees (or lack
of influence).  Maybe a person with access to the source code can
interprete these patterns.
 * For seeds below 2^31, the bits 6,7, and 24 are ignored; the
corresponding binary digits have the respective values 2^6(==64), 2^7
(as in the example above), and 2^24.
 * For bigger seeds (i.e., not machine size integers), the bits 6, 7,
and 24 do take effect, but the bits 40, 54, 55, 72, 86, and 87 are
always ignored.  On the other hand, adding, e.g., 2^50 always has an
influence on the pseudo- random sequence that will be generated.  I
did not check for seeds above 2^100.


Other Aspects of Random[] etc.
------------------------------
The effect does not depend on the range of integers requested in the
call to Random.  Real-valued random numbers (e.g. Random[]) are not
affected.
  $RandomState, the state of the random number generator, is an
integer and seems evenly distributed with equal probability (1/2) in
either of the intervals [0,2^1854] or [2^1854, 3*2^1854].
  Generating an integer random number changes $RandomState
generating a real does not (!);  these seem to be disjoint random
streams.


Workaround
----------
Multiply the seeds by 5 (or 256).


Hoping this might help some of you, or you might help me




  • Prev by Date: Solve-Command
  • Next by Date: Re: SeedRandom oddity/flaw/bug/imperfection
  • Previous by thread: Re: SeedRandom oddity/flaw/bug/imperfection
  • Next by thread: Re: SeedRandom oddity/flaw/bug/imperfection