Pseudorandom Number Generator Iterators
Pseudorandom number generator (PRNG) iterators.
Usage
var ns = require( '@stdlib/random/iter' );
ns
Namespace containing pseudorandom number generator (PRNG) iterators.
var iterators = ns;
// returns {...}
The namespace contains the following functions for creating iterator protocol-compliant iterators:
arcsine( a, b[, options] )
: create an iterator for generating pseudorandom numbers drawn from an arcsine distribution.bernoulli( p[, options] )
: create an iterator for generating pseudorandom numbers drawn from a Bernoulli distribution.beta( alpha, beta[, options] )
: create an iterator for generating pseudorandom numbers drawn from a beta distribution.betaprime( alpha, beta[, options] )
: create an iterator for generating pseudorandom numbers drawn from a beta prime distribution.binomial( n, p[, options] )
: create an iterator for generating pseudorandom numbers drawn from a binomial distribution.boxMuller( [options] )
: create an iterator for generating pseudorandom numbers drawn from a standard normal distribution using the Box-Muller transform.cauchy( x0, gamma[, options] )
: create an iterator for generating pseudorandom numbers drawn from a Cauchy distribution.chi( k[, options] )
: create an iterator for generating pseudorandom numbers drawn from a chi distribution.chisquare( k[, options] )
: create an iterator for generating pseudorandom numbers drawn from a chi-square distribution.cosine( mu, s[, options] )
: create an iterator for generating pseudorandom numbers drawn from a raised cosine distribution.discreteUniform( a, b[, options] )
: create an iterator for generating pseudorandom numbers drawn from a discrete uniform distribution.erlang( k, lambda[, options] )
: create an iterator for generating pseudorandom numbers drawn from an Erlang distribution.exponential( lambda[, options] )
: create an iterator for generating pseudorandom numbers drawn from an exponential distribution.f( d1, d2[, options] )
: create an iterator for generating pseudorandom numbers drawn from an F distribution.frechet( alpha, s, m[, options] )
: create an iterator for generating pseudorandom numbers drawn from a Fréchet distribution.gamma( alpha, beta[, options] )
: create an iterator for generating pseudorandom numbers drawn from a gamma distribution.geometric( p[, options] )
: create an iterator for generating pseudorandom numbers drawn from a geometric distribution.gumbel( mu, beta[, options] )
: create an iterator for generating pseudorandom numbers drawn from a Gumbel distribution.hypergeometric( N, K, n[, options] )
: create an iterator for generating pseudorandom numbers drawn from a hypergeometric distribution.improvedZiggurat( [options] )
: create an iterator for generating pseudorandom numbers drawn from a standard normal distribution using the Improved Ziggurat algorithm.invgamma( alpha, beta[, options] )
: create an iterator for generating pseudorandom numbers drawn from an inverse gamma distribution.kumaraswamy( a, b[, options] )
: create an iterator for generating pseudorandom numbers drawn from a Kumaraswamy's double bounded distribution.laplace( mu, b[, options] )
: create an iterator for generating pseudorandom numbers drawn from a Laplace (double exponential) distribution.levy( mu, c[, options] )
: create an iterator for generating pseudorandom numbers drawn from a Lévy distribution.logistic( mu, s[, options] )
: create an iterator for generating pseudorandom numbers drawn from a logistic distribution.lognormal( mu, sigma[, options] )
: create an iterator for generating pseudorandom numbers drawn from a lognormal distribution.minstdShuffle( [options] )
: create an iterator for a linear congruential pseudorandom number generator (LCG) whose output is shuffled.minstd( [options] )
: create an iterator for a linear congruential pseudorandom number generator (LCG) based on Park and Miller.mt19937( [options] )
: create an iterator for a 32-bit Mersenne Twister pseudorandom number generator.negativeBinomial( r, p[, options] )
: create an iterator for generating pseudorandom numbers drawn from a negative binomial distribution.normal( mu, sigma[, options] )
: create an iterator for generating pseudorandom numbers drawn from a normal distribution.pareto1( alpha, beta[, options] )
: create an iterator for generating pseudorandom numbers drawn from a Pareto (Type I) distribution.poisson( lambda[, options] )
: create an iterator for generating pseudorandom numbers drawn from a Poisson distribution.randi( [options] )
: create an iterator for generating pseudorandom numbers having integer values.randn( [options] )
: create an iterator for generating pseudorandom numbers drawn from a standard normal distribution.randu( [options] )
: create an iterator for generating uniformly distributed pseudorandom numbers between0
and1
.rayleigh( sigma[, options] )
: create an iterator for generating pseudorandom numbers drawn from a Rayleigh distribution.t( v[, options] )
: create an iterator for generating pseudorandom numbers drawn from a Student's t distribution.triangular( a, b, c[, options] )
: create an iterator for generating pseudorandom numbers drawn from a triangular distribution.uniform( a, b[, options] )
: create an iterator for generating pseudorandom numbers drawn from a continuous uniform distribution.weibull( k, lambda[, options] )
: create an iterator for generating pseudorandom numbers drawn from a Weibull distribution.
Examples
var roundn = require( '@stdlib/math/base/special/roundn' );
var mean = require( '@stdlib/stats/base/mean' );
var iter = require( '@stdlib/random/iter' );
var initialPrice = 100.0;
var currentPrice = initialPrice;
var numDays = 30;
var volatility = 0.02; // 2% daily volatility
// Create iterator for random price movements:
var priceIter = iter.normal( 0.0, volatility );
var prices = [ initialPrice ];
var dailyReturns = [];
// Simulate price movements:
var change;
var i;
for ( i = 0; i < numDays; i++ ) {
change = priceIter.next().value;
currentPrice *= ( 1.0 + change );
prices.push( roundn( currentPrice, -2 ) );
dailyReturns.push( change * 100.0 );
}
// Calculate summary statistics:
var totalReturn = ( ( currentPrice - initialPrice ) / initialPrice ) * 100.0;
var avgReturn = mean( numDays, dailyReturns, 1 );
// Print results:
console.log( 'Stock Price Simulation Results:' );
console.log( '-------------------------------' );
console.log( 'Initial Price: $%d', initialPrice );
console.log( 'Final Price: $%d', roundn( currentPrice, -2 ) );
console.log( 'Total Return: %d%', roundn( totalReturn, -2 ) );
console.log( 'Average Daily Return: %d%', roundn( avgReturn, -2 ) );
console.log( '\nPrice History:' );
console.log( prices.join( ' → ' ) );