randgenmatrix
Version:
Generate random numbers with specifications
142 lines (131 loc) • 4.61 kB
JavaScript
const fs = require('fs');
function GenerateRandomArray(length, min, max, decimal){
var output = []
for (let i = 0; i < length; i++) {
let randNum = Math.random() * (max - min) + min
randNum = randNum.toFixed(decimal)
output.push(randNum)
}
return output
}
function GenerateRandomMatrix(rows, cols, min, max, decimal){
var outputmatrix = []
for (let i = 0; i < rows; i++){
var row = []
for (let j = 0; j < cols; j++){
let randNum = Math.random() * (max - min) + min
randNum = randNum.toFixed(decimal)
row.push(randNum)
}
outputmatrix.push(row)
}
return outputmatrix
}
// will be made to be a private utility later
function exportData(source, exportType, exportPath) {
switch(exportType){
case 'console':
console.log(source)
case 'txt':
des = exportPath + '/output.txt'
fs.writeFile(des, source, err => {
if (err) {
console.error(err);
}
})
break
case 'csv':
des = exportPath + '/output.cvs'
fs.writeFile(des, source, err => {
if (err) {
console.error(err);
}
})
break
}
}
function ExportRandomRow(length, min, max, decimal, exportType, exportPath){
var output = GenerateRandomArray(length, min, max, decimal)
var outputstring = ''
var des = '' // final export destination
for (let i = 0; i < length; i++){
var item = `${output[i]}, `
outputstring = outputstring + item
}
exportData(outputstring, exportType, exportPath)
return output
}
function ExportRandomCol(length, min, max, decimal, exportType, exportPath){
var output = GenerateRandomArray(length, min, max, decimal)
var outputstring = ''
var des = '' // final export destination
for (let i = 0; i < length; i++){
var item = `${output[i]},\n`
outputstring = outputstring + item
}
exportData(outputstring, exportType, exportPath)
return output
}
function ExportRandomMatrix(rows, cols, min, max, decimal, exportType, exportPath) {
var output = GenerateRandomMatrix(rows, cols, min, max, decimal)
var outputstring = ''
var des = '' // final export destination
for (let i = 0; i < rows; i++) {
var rowstring = ''
for (let j = 0; j < cols; j++) {
var item = `${output[i][j]}, `
rowstring = rowstring + item
}
outputstring = outputstring + '\n' + rowstring
}
exportData(outputstring, exportType, exportPath)
return output
}
function GenerateArrayByPattern(length, offset, decimal, pattern){
var output = []
var order = pattern[0]
var coef = []
for (let l = 0; l < order; l++) {
if (pattern[l+1]) {
coef.push(pattern[l+1])
}
else {
coef.push(0)
}
}
let Num = 1
for (let i = 0; i < length; i++) {
var result = 0
var o = order
for (let j = 0; j < coef.length; j++) {
result = result + coef[j] * Math.pow(Num, o)
o = o - 1
}
var randNum = Math.random() * ((result+offset) - (result-offset)) + (result-offset)
randNum = randNum.toFixed(decimal)
output.push(randNum)
Num++
}
return output
}
function ExportArrayByPattern(length, offset, decimal, pattern, exportType, exportPath) {
var output = GenerateArrayByPattern(length, offset, decimal, pattern)
var outputstring = ''
var des = '' // final export destination
for (let i = 0; i < length; i++){
var item = `${output[i]}, `
outputstring = outputstring + item
}
exportData(outputstring, exportType, exportPath)
return output
}
module.exports = GenerateRandomArray, ExportRandomRow, ExportRandomCol, GenerateRandomMatrix, GenerateArrayByPattern,
ExportRandomMatrix, ExportArrayByPattern
//testing commands
console.log(GenerateRandomMatrix(7, 3, 56, 80, 2));
console.log(GenerateRandomMatrix(7, 3, 56, 80, 2)[0])
//GenerateRandomCol(7, 56, 80, 2, 'console', '.')
//console.log(GenerateRandomArray(7, 56, 80, 2));
//ExportRandomMatrix(7, 3, 56, 80, 2, 'csv', '.')
//console.log(GenerateArrayByPattern(30, 0.01, 3, [2,4,0,5,5], 3, 5));
//ExportArrayByPattern(30, 0.01, 3, [2,4,0,5,5], 'csv', '.')