#!/usr/bin/env node var argv = require('minimist')(process.argv.slice(2)); // 32-bit integer conversion of the built-in RNG. function JavaScript() {} JavaScript.prototype.next = function () { return Math.random() * 4294967296 >>> 0; }; JavaScript.NUM_BITS = 32; // Park-Miller. function ParkMiller(seed) { this._seed = seed % 2147483647; if (this._seed <= 0) this._seed += 2147483646; } ParkMiller.NUM_BITS = 31; ParkMiller.prototype.next = function () { return this._seed = this._seed * 16807 % 2147483647; }; var SEED = argv.seed || 12345, COUNT = argv.count || 10000000, PRNG = argv.prng || 'JavaScript'; var RandomClass = eval(PRNG); if (!RandomClass) { throw new Error('Invalid PRNG ' + PRNG); } process.stdout.write('# ' + PRNG + '\n'); process.stdout.write('# seed: ' + SEED + '\n'); process.stdout.write('type: d\n'); process.stdout.write('count: ' + COUNT + '\n'); process.stdout.write('numbit: ' + (RandomClass.NUM_BITS || 32) + '\n'); var r = new RandomClass(SEED); for (var i = 0; i < COUNT; i++) { var num = r.next().toString(); num = ' '.slice(0, 10 - num.length) + num; process.stdout.write(num + '\n'); }