| Index: src/IceRNG.h
 | 
| diff --git a/src/IceRNG.h b/src/IceRNG.h
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..fcc65fb1084f9cb11402debc1c02c1ec2c86e7a1
 | 
| --- /dev/null
 | 
| +++ b/src/IceRNG.h
 | 
| @@ -0,0 +1,38 @@
 | 
| +//===- subzero/src/IceRNG.h - Random number generator -----------*- C++ -*-===//
 | 
| +//
 | 
| +//                        The Subzero Code Generator
 | 
| +//
 | 
| +// This file is distributed under the University of Illinois Open Source
 | 
| +// License. See LICENSE.TXT for details.
 | 
| +//
 | 
| +//===----------------------------------------------------------------------===//
 | 
| +//
 | 
| +// This file declares a random number generator.
 | 
| +//
 | 
| +//===----------------------------------------------------------------------===//
 | 
| +
 | 
| +#ifndef SUBZERO_SRC_ICERNG_H
 | 
| +#define SUBZERO_SRC_ICERNG_H
 | 
| +
 | 
| +#include <stdint.h>
 | 
| +
 | 
| +namespace Ice {
 | 
| +
 | 
| +// TODO: Replace with a cryptographically secure PRNG.
 | 
| +class RandomNumberGenerator {
 | 
| +public:
 | 
| +  RandomNumberGenerator(uint64_t Seed) : State(Seed) {}
 | 
| +
 | 
| +  uint64_t next(uint64_t Bound) {
 | 
| +    // Lewis, Goodman, and Miller (1969)
 | 
| +    State = (16807 * State) % 2147483647;
 | 
| +    return State % Bound;
 | 
| +  }
 | 
| +
 | 
| +private:
 | 
| +  uint64_t State;
 | 
| +};
 | 
| +
 | 
| +}
 | 
| +
 | 
| +#endif // SUBZERO_SRC_ICERNG_H
 | 
| 
 |