function NextRandomNumber() {
  var hi = this.seed / this.Q
  var lo = this.seed % this.Q
  var test = this.A * lo - this.R * hi;
  if (test > 0) {
    this.seed = test
  }
  else {
    this.seed = test + this.M
  }
  return (this.seed * this.oneOverM)
}

function RandomNumberGenerator(seed) 
{
  var d = new Date()
  if (1) {
    this.seed = 
      2345678901 + 
      (d.getSeconds() * 0xFFFFFF) + 
      (d.getMinutes() * 0xFFFF);
  }
  else {
    this.seed = seed
  }
  this.A = 48271;
  this.M = 2147483647;
  this.Q = this.M / this.A
  this.R = this.M % this.A
  this.oneOverM = 1.0 / this.M
  this.next = NextRandomNumber
  return this
}

var rgen = new RandomNumberGenerator(0);

function randomInRange(N) 
{
  return 1 + Math.floor(N*randomFraction())
} 

function randomFraction() 
{
  return rgen.next()
}

function seedRandom(seed)
{
  rgen = RandomNumberGenerator(seed)
}

