# Use the MLS Junk Generator Algorithm to Generate a Stream of Pseudo-Random Numbers

Generate a stream of pseudo-random numbers generated using the MLS Junk Generator algorithm. Functions exist to generate single pseudo-random numbers as well as a vector, data frame, or matrix of pseudo-random numbers.

# mlsjunkgen

`mlsjunkgen` is an R package that generates pseudo-random numbers using the MLS Junk Generator algorithm (see below).

Author: Steve Myles ([email protected])

I took a course in graduate school ("Statistical Analysis for Digital Simulation") at Texas Tech from Dr. Elliot Montes in which we spent a lot of time on the generation and analysis of random numbers. Here is a simple-yet-powerful pseudo-random number generator that I learned about in that course. It is named "The MLS Junk Generator" after Dr. Milton L. Smith.

I have also released an Excel/VBA implementation and provided the simple R code used as the basis for this package.

#### Algorithm

For any seed values of w, x, y, z:

ri = 5.980217w2 + 9.446377x0.25 + 4.81379y0.33 + 8.91197z0.5

ri = ri - Int(ri)

For ri+1:

w = x

x = y

y = z

z = ri

#### Analysis

This generator tends to do well with various tests for randomness (K-S, Chi Square, test for runs up and down). It may not perform as well on other tests (e.g., tests for runs above and below the mean), but that could relate to my choice of seeds. As a point of reference, the period of Excel's built-in random number generator is 16,777,216 and the MLS Junk Generator's period is something greater than 9.9 billion (the point at which I gave up on trying to determine it).

### Installation

• `mlsjunkgen` is available on CRAN and can be installed accordingly:

• You can also install `mlsjunkgen` from GitHub using the `devtools` package:

### Usage

The package consists of four functions:

1. `junkgen` - generates a pseudo-random number from user-specified seeds
2. `mlsjunkgenv` - generates a vector of pseudo-random numbers by calling `junkgen` a user-specified number of times
3. `mlsjunkgend` - generates a data frame of pseudo-random numbers by calling `junkgen` a user-specified number of times
4. `mlsjunkgenm` - generates a user-specified size matrix of pseudo-random numbers by calling `mlsjunkgenv` and assigning the results to a matrix

#### Examples

`junkgen` generates a single pseudo-random number based on four user-specified seeds:

`mlsjunkgenv` generates a vector containing a stream of `n` (default = 1) user-specified pseudo-random numbers based on four user-specified seeds rounded to a specified (default = 5) number of decimal places:

The same example with default rounding:

`mlsjunkgend` generates a data frame containing a stream of `n` user-specified pseudo-random numbers based on four user-specified seeds:

The same example with default rounding:

`mlsjunkgenm` generates a matrix of user-specified size containing a stream of pseudo-random numbers based on four user-specified seeds:

# Reference manual

install.packages("mlsjunkgen")

0.1.2 by Steve Myles, 4 days ago

https://stevemyles.site/mlsjunkgen/, https://github.com/scumdogsteev/mlsjunkgen

Report a bug at https://github.com/scumdogsteev/mlsjunkgen/issues

Browse source code at https://github.com/cran/mlsjunkgen

Authors: Steve Myles [aut, cre]

Documentation:   PDF Manual