long random integer generation

Tim Roberts timr at probo.com
Thu Aug 17 02:35:10 EDT 2000


tde at cs.mu.OZ.AU (Timothy David EBRINGER) wrote:

>Does anyone know of an easy way to generate long (uniformely distributed)
>random integers, for example, I'd like to be able to write
>
>generator = whrandom.whrandom()
>N = generator.randint(1L,
>987349857349878957987598743987587598374985739847589L)

It is not hard to write a linear congruential random number generator, like
that used in most run-time libraries.  Here's one that can generate 128-bit
values:


class BigRand:
  RandSeed = 11111111111111111111111111111111111L

  def Rand(self):
    hold = self.RandSeed
    self.RandSeed = (self.RandSeed * 134775813L + 1L) % (2L**128L)
    return hold


r = BigRand()
for i in range(20):
  print r.Rand()

--
- Tim Roberts, timr at probo.com
  Providenza & Boekelheide, Inc.



More information about the Python-list mailing list