#lang scribble/manual @(require scribble/eval "cmwc.rkt") @title{Complementary Multiply-With-Carry Psuedo-Random Number Generator} @defmodule[(planet djhaskin987/cmwc:1:0)]{Provides functions which construct generators for random numbers using the complementary multiply-with-carry method.} @defproc[(make-cmwc-gen [seed (listof integer?)] [a integer?] [b integer?] [c integer?]) (and/c generator? (-> integer?))]{Given a seed list, a multiplier @racket[a], a modulus @racket[b], and an initial carry value @racket[c], makes and returns a random number generator.} @defproc[(make-default-cmwc-gen [init-seed integer?]) (and/c generator? (-> integer?))]{Makes the default generator whose seed is generated by init-cmwc-seed, and whose @racket[a], @racket[b] and initial @racket[c] is carefully chosen to give a lag of 4096, a period of 2^131104 and which yields numbers in the range of 0-4,294,967,295.} @defproc[(make-cmwc-gen-raw [raw-seed queue?] [a integer?] [b integer?] [c integer?]) (and/c generator? (-> integer?))]{Makes a generator using a raw seed, or a seed in queue form rather than list form. } @defproc[(init-cmwc-seed [init-seed integer?] [lag integer?]) queue?]{Yields a raw cmwc seed based on an initial integer @racket[init-seed] whose length (number of integers in the seed) is @racket[lag].}