Skip to content

Instantly share code, notes, and snippets.

@ybakos
Created November 3, 2014 20:12
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save ybakos/7ca67fcfd07477a9550b to your computer and use it in GitHub Desktop.
Save ybakos/7ca67fcfd07477a9550b to your computer and use it in GitHub Desktop.
Jack Pseudo Random Numbers for Nand 2 Tetris
/* Random.jack
* By Mark Armbrust
* http://nand2tetris-questions-and-answers-forum.32033.n3.nabble.com/Random-number-generator-for-hack-cpu-td4025503.html
* Also see:
* http://nand2tetris-questions-and-answers-forum.32033.n3.nabble.com/Pseudo-Random-Number-Generator-td4026059.html#a4027617
*/
class Random {
static int seed;
function void setSeed(int newSeed) {
let seed = newSeed;
return;
}
function int rand() {
/** return a random number in the range 0..32767 */
let seed = seed + 20251;
if (seed < 0) {
let seed = seed - 32767 - 1;
}
return seed;
}
function int randRange(int range) {
/** return a random number in the range 0..range */
var int mask;
var int ret;
let mask = 1;
while (mask < range) {
let mask = mask * 2 + 1;
}
let ret = Random.rand() & mask;
while (ret > range) {
let ret = Random.rand() & mask;
}
return ret;
}
}
@khavinshankar
Copy link

This random module was very useful

@NikHerronCoding
Copy link

Thanks for this! very helpful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment