Normal Random Variables
Creates a matrix or array filled with draws from a normal distribution.
Installation
$ npm install distributions-normal-random
For use in the browser, use browserify.
Usage
var random = ;
random( [dims][, opts] )
Creates a matrix
or array
filled with draws from a normal distribution. The dims
argument may either be a positive integer
specifying a length
or an array
of positive integers
specifying dimensions. If no dims
argument is supplied,the function returns a single random draw from a normal distribution.
var out;// Set seedrandomseed = 2;out = ;// returns [ ~-0.832, ~0.735, ~-1.432, ~0.057, -0.13 ]out = ;// returns [ [ [~0.969,~-0.394] ], [ [~0.599,~-1.511] ] ]
The function accepts the following options
:
- mu: mean parameter. Default:
0
. - sigma: standard deviation. Default:
1
. - seed: positive integer used as a seed to initialize the generator. If not supplied, uniformly distributed random numbers are generated via an underlying generator seedable by setting the
seed
property of the exported function. - dtype: output data type (see
matrix
for a list of acceptable data types). Default:generic
.
The normal distribution is a function of two parameters: mu
(mean) and sigma > 0
(standard deviation). By default, mu
is equal to 0
and sigma
is equal to 1
. To adjust either parameter, set the corresponding option.
var out =;// returns [ ~25.293, ~21.105, ~21.347, 22.57, ~18.726 ]
To be able to reproduce the generated random numbers, set the seed
option to a positive integer.
var out =;// returns [ ~-0.643, ~0.937, ~0.049 ]var out =;// returns [ ~-0.643, ~0.937, ~0.049 ]
If no seed
option is supplied, each function call uses a common underlying uniform number generator. A positive-integer seed for this underlying generator can be supplied by setting the seed property of the exported function.
randomseed = 11;var out = ;// returns ~-0.921 var out = ;// returns ~0.389 randomseed = 11;var out = ;// returns ~-0.921 var out = ;// returns ~0.389
By default, the output data structure is a generic array
. To output a typed array
or matrix
, set the dtype
option.
var out;out =;// returns Float32Array( [~0.166,~0.916,~-0.003,-0.08,~-2.608] )out =;/*[ ~-0.482 ~0.274~0.725 ~1.113~0.608 1.05 ]*/
Notes:
-
Currently, for more than
2
dimensions, the function outputs a genericarray
and ignores any specifieddtype
.var out =;// returns [ [ [~0.873,~-0.510,~-0.370] ], [ [~0.393,~-0.233,~0.907] ] ]
Method
The used algorithm to generate normal random variables is the "Improved Ziggurat method" developed by J. Doornik. In a speed comparison of different algorithms, Doornik found that the Ziggurat method was two or three times faster than the commonly used polar method (Box-Mueller Transform) when generating 10^9
standard normal random numbers.
Reference:
Doornik, J. a. (2005). An Improved Ziggurat Method to Generate Normal Random Samples.
Examples
var random =out;// Set seedrandomseed = 11;// Plain arrays...// 1x10:out = ;// 2x1x3:out = ;// 5x5x5:out = ;// 10x5x10x20:out = ;// Typed arrays...out =;// Matrices...out =;
To run the example code from the top-level application directory,
$ node ./examples/index.js
Tests
Unit
Unit tests use the Mocha test framework with Chai assertions. To run the tests, execute the following command in the top-level application directory:
$ make test
All new feature development should have corresponding unit tests to validate correct functionality.
Test Coverage
This repository uses Istanbul as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:
$ make test-cov
Istanbul creates a ./reports/coverage
directory. To access an HTML version of the report,
$ make view-cov
License
Copyright
Copyright © 2015-2016. The Compute.io Authors.