Park-Miller-Carta PRNG

(documentation in progress) This is a multi-language repository, demonstrating C-Rust-Node.js-Web interoperability/portability.

It utilizes Rust as a build system, in order to compile the original C implemetations by Robin Whittle. A faithful Rust port is also included, cross-compilable to asm.js and WebAssembly via Emscripten, for use in Node.js and browsers.

Using from Node.js

Add with npm i --save --only=production park-miller-carta-prng.

index.js: ```js let {prng, asmjs, wasm} = require("park-miller-carta-prng"); let assert = require('assert');

// use asm.js version let generator = prng(asmjs)(1);

assert(generator.getInteger() === 16807); generator.destroy();

// use wasm version generator = prng(wasm)(1);

assert(generator.getInteger() === 16807); generator.destroy(); `` You should always calldestroy()` when you are done using the generator. Available methods:

Using from Rust

Add park-miller-carta-prng to [dependencies] in Cargo.toml

main.rs: ```rust extern crate prng; use prng::PRNG;

fn main() { let mut prng = PRNG::new(1); let randomfloat = prng.nextunsignedfloat(); asserteq!(0.000007826369, random_float);

let random_int = prng.next_unsigned_integer();
assert_eq!(282475249, random_int);

} ```

Getting Started

  1. Clone the repository: git clone https://github.com/kenOfYugen/park-miller-carta-prng
  2. Enter the directory: cd park-miller-carta-prng
  3. Build (add the --release flag for optimized builds)

Prerequisites

Checklist