/*
Random Number Generator
Original author: Taylor Wacker
Modified by: Connor McKay, Sean O'Connor
https://gist.github.com/greneholt/2212294

This is a pseudo random number generator that uses the
Linear Congruential Generator (LCG) to generate random
numbers.
*/
class Random {
	static int x;

	/*
	Sets a new seed value.
	*/
	function void seed(int seed) {
		let x = seed;
		return;
	}

	/*
	Returns a mod b. b must be positive.
	*/
	function int mod(int a, int b) {
		if (a < 0) {
			let a = -a;
		}

		while ((a + 1) > b) {
			let a = a - b;
		}

		return a;
	}

	/*
	Returns the next random number. Can be negative or positive.
	*/
	function int next() {
		let x = 7919 + (17*x);
		return x;
	}

	/*
	Returns a random value between x (inclusive) and y (non-inclusive).
	y must be greater than x.
	*/
	function int between(int x, int y) {
		var int diff;
		let diff = y - x;
		return Random.mod(Random.next(), diff) + x;
	}
}
