From fdd13ea348027f5e6650e81ae34f5a8c1218892a Mon Sep 17 00:00:00 2001 From: the-r3aper7 Date: Fri, 8 Mar 2024 10:57:18 +0530 Subject: [PATCH 1/3] docs(added readme examples for random/iter): added examples --- .../@stdlib/random/iter/README.md | 63 ++++++++++++++++++- 1 file changed, 60 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/random/iter/README.md b/lib/node_modules/@stdlib/random/iter/README.md index 7e7d7a4c6956..7a59e452c6e8 100644 --- a/lib/node_modules/@stdlib/random/iter/README.md +++ b/lib/node_modules/@stdlib/random/iter/README.md @@ -103,11 +103,68 @@ The namespace contains the following functions for creating iterator protocol-co +### Generate shuffled data set + ```javascript -var objectKeys = require( '@stdlib/utils/keys' ); -var ns = require( '@stdlib/random/iter' ); +var iterator = require( '@stdlib/random/iter/uniform' ); +var shuffle = require( '@stdlib/random/shuffle' ); + +var min = 1; +var max = 10; +var iterations = 7; +var uniformIter; +var numbers = []; +var shuffled; +var i; + +// Create an iterator for generating uniform random numbers +uniformIter = iterator(min, max, { + 'iter': iterations +}); + +for ( i = 0; i < iterations; i++ ) { + numbers[i] = uniformIter.next().value; +} -console.log( objectKeys( ns ) ); +shuffled = shuffle(numbers); + +console.log(shuffled); +``` + +### Calculating the Average Displacement by using random Steps + +```javascript +var iterator = require( '@stdlib/random/iter/uniform' ); +var round = require( '@stdlib/math/base/special/round' ); +var roundn = require( '@stdlib/math/base/special/roundn' ); + +var averageDisplacement; +var numSteps = 50; +var stepSize = 2; +var startingPosition = 0; +var totalDisplacement = 0; +var step = 0; +var positions = []; +var currentPosition = startingPosition; +var i = 0; + +// Generate a stream of random steps of stepSize +var stepIter = iterator(-stepSize, stepSize); + +// Simulate the random walk +for ( i = 0; i < numSteps; i++ ) { + step = round(stepIter.next().value); + currentPosition += step; + positions.push(currentPosition); +} + +for ( i = 0; i < positions.length; i++ ) { + totalDisplacement += positions[i]; +} + +averageDisplacement = roundn(totalDisplacement / numSteps, -2); + +console.log('Average displacement from starting position:', averageDisplacement); ``` From b3a8e506ca4e34f5ee380d391259e594073b8321 Mon Sep 17 00:00:00 2001 From: Philipp Burckhardt Date: Tue, 29 Oct 2024 21:21:23 -0400 Subject: [PATCH 2/3] chore: update example code --- .../@stdlib/random/iter/README.md | 88 +++++++------------ .../@stdlib/random/iter/examples/index.js | 39 +++++++- 2 files changed, 68 insertions(+), 59 deletions(-) diff --git a/lib/node_modules/@stdlib/random/iter/README.md b/lib/node_modules/@stdlib/random/iter/README.md index 7a59e452c6e8..349dfaf36b5e 100644 --- a/lib/node_modules/@stdlib/random/iter/README.md +++ b/lib/node_modules/@stdlib/random/iter/README.md @@ -103,68 +103,44 @@ The namespace contains the following functions for creating iterator protocol-co -### Generate shuffled data set - ```javascript -var iterator = require( '@stdlib/random/iter/uniform' ); -var shuffle = require( '@stdlib/random/shuffle' ); - -var min = 1; -var max = 10; -var iterations = 7; -var uniformIter; -var numbers = []; -var shuffled; -var i; - -// Create an iterator for generating uniform random numbers -uniformIter = iterator(min, max, { - 'iter': iterations -}); - -for ( i = 0; i < iterations; i++ ) { - numbers[i] = uniformIter.next().value; -} - -shuffled = shuffle(numbers); - -console.log(shuffled); -``` - -### Calculating the Average Displacement by using random Steps - -```javascript -var iterator = require( '@stdlib/random/iter/uniform' ); -var round = require( '@stdlib/math/base/special/round' ); var roundn = require( '@stdlib/math/base/special/roundn' ); +var mean = require( '@stdlib/stats/base/mean' ); +var iterator = require( '@stdlib/random/iter' ); -var averageDisplacement; -var numSteps = 50; -var stepSize = 2; -var startingPosition = 0; -var totalDisplacement = 0; -var step = 0; -var positions = []; -var currentPosition = startingPosition; -var i = 0; - -// Generate a stream of random steps of stepSize -var stepIter = iterator(-stepSize, stepSize); - -// Simulate the random walk -for ( i = 0; i < numSteps; i++ ) { - step = round(stepIter.next().value); - currentPosition += step; - positions.push(currentPosition); -} +var initialPrice = 100.0; +var currentPrice = initialPrice; +var numDays = 30; +var volatility = 0.02; // 2% daily volatility -for ( i = 0; i < positions.length; i++ ) { - totalDisplacement += positions[i]; -} +// Create iterator for random price movements: +var priceIter = iterator.normal( 0.0, volatility ); +var prices = [ initialPrice ]; +var dailyReturns = []; -averageDisplacement = roundn(totalDisplacement / numSteps, -2); +// 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 ); +} -console.log('Average displacement from starting position:', averageDisplacement); +// 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( ' → ' ) ); ``` diff --git a/lib/node_modules/@stdlib/random/iter/examples/index.js b/lib/node_modules/@stdlib/random/iter/examples/index.js index c7e940d87f24..d28a42ce4d50 100644 --- a/lib/node_modules/@stdlib/random/iter/examples/index.js +++ b/lib/node_modules/@stdlib/random/iter/examples/index.js @@ -18,7 +18,40 @@ 'use strict'; -var objectKeys = require( '@stdlib/utils/keys' ); -var ns = require( './../lib' ); +var roundn = require( '@stdlib/math/base/special/roundn' ); +var mean = require( '@stdlib/stats/base/mean' ); +var iterator = require( './../lib' ); -console.log( objectKeys( ns ) ); +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 = iterator.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( ' → ' ) ); From b93aab64accd4d134e9a27984068b67feaa4cff1 Mon Sep 17 00:00:00 2001 From: Philipp Burckhardt Date: Tue, 29 Oct 2024 21:22:52 -0400 Subject: [PATCH 3/3] chore: rename variable --- lib/node_modules/@stdlib/random/iter/README.md | 4 ++-- lib/node_modules/@stdlib/random/iter/examples/index.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/random/iter/README.md b/lib/node_modules/@stdlib/random/iter/README.md index 349dfaf36b5e..15da93027f55 100644 --- a/lib/node_modules/@stdlib/random/iter/README.md +++ b/lib/node_modules/@stdlib/random/iter/README.md @@ -106,7 +106,7 @@ The namespace contains the following functions for creating iterator protocol-co ```javascript var roundn = require( '@stdlib/math/base/special/roundn' ); var mean = require( '@stdlib/stats/base/mean' ); -var iterator = require( '@stdlib/random/iter' ); +var iter = require( '@stdlib/random/iter' ); var initialPrice = 100.0; var currentPrice = initialPrice; @@ -114,7 +114,7 @@ var numDays = 30; var volatility = 0.02; // 2% daily volatility // Create iterator for random price movements: -var priceIter = iterator.normal( 0.0, volatility ); +var priceIter = iter.normal( 0.0, volatility ); var prices = [ initialPrice ]; var dailyReturns = []; diff --git a/lib/node_modules/@stdlib/random/iter/examples/index.js b/lib/node_modules/@stdlib/random/iter/examples/index.js index d28a42ce4d50..cc1b0aa5b640 100644 --- a/lib/node_modules/@stdlib/random/iter/examples/index.js +++ b/lib/node_modules/@stdlib/random/iter/examples/index.js @@ -20,7 +20,7 @@ var roundn = require( '@stdlib/math/base/special/roundn' ); var mean = require( '@stdlib/stats/base/mean' ); -var iterator = require( './../lib' ); +var iter = require( './../lib' ); var initialPrice = 100.0; var currentPrice = initialPrice; @@ -28,7 +28,7 @@ var numDays = 30; var volatility = 0.02; // 2% daily volatility // Create iterator for random price movements: -var priceIter = iterator.normal( 0.0, volatility ); +var priceIter = iter.normal( 0.0, volatility ); var prices = [ initialPrice ]; var dailyReturns = [];