How to use Linear congruential generator

Question:

I have to develop a Linear Congruential Generator with this formula Xn+1 = (aXn + b) mod m in Python. I think I understand how to generate the sequence of numbers but I don’t know how to use it, for example to simulate a dice (I need a number between 1 and 6)

def seedLCG(initVal):
  global rand
  rand = initVal

def lcg():
  a = 1664525
  b = 1013904223
  m = 2**32
  global rand
  rand = (a*rand + b) % m
  return rand

seedLCG(1)

for i in range(10):
  print lcg()
Asked By: J.doe

||

Answers:

The LCG is a common algorithm for pseudo-random number generation. You can not use m=6 or else your LCG periodicity will be low. You need to use well chosen values of a,b and m to ensure the LCG does not have a small periodicity.

You could use a=0x19660d, b=0x3c6ef35f, m=2**32

This will produce pseudo-random integers, you can get a dice with:

dice = 1 + lcg(a,b,m) % 6
Answered By: Sebapi
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.