+++ /dev/null
-/**
- * Author: Mark Larkin
- *
- * Copyright (c) 2007 Des Higgins, Julie Thompson and Toby Gibson.
- */
-#ifdef HAVE_CONFIG_H
- #include "config.h"
-#endif
-#include "RandomGenerator.h"
-
-namespace clustalw
-{
-
-/**
- * The contructor initialises the random algorithm.
- * @param s
- * @return
- */
-RandomGenerator::RandomGenerator(unsigned long s)
- : m(100000000), m1(10000)
-{
- a[0] = s;
- j = 0;
- do
- {
- ++j;
- a[j] = (mult(31, a[j - 1]) + 1) % m;
- }
- while (j < 54);
-}
-
-/**
- * additive congruential method.
- * @param r
- * @return unsigned long random number in the range 0 to r-1
- */
-unsigned long RandomGenerator::addRand(unsigned long r)
-{
- int x, y;
- j = (j + 1) % 55;
- x = (j + 23) % 55;
- y = (j + 54) % 55;
- a[j] = (a[x] + a[y]) % m;
-
- return (((a[j] / m1) *r) / m1);
-}
-
-/**
- *
- * @param p
- * @param q
- * @return
- */
-unsigned long RandomGenerator::mult(unsigned long p, unsigned long q)
-{
- unsigned long p1, p0, q1, q0;
-
- p1 = p / m1;
- p0 = p % m1;
- q1 = q / m1;
- q0 = q % m1;
- return ((((p0 *q1 + p1 * q0) % m1) *m1 + p0 * q0) % m);
-}
-
-}