Statistics/Basic: Difference between revisions

Content added Content deleted
(→‎{{header|VBA}}: using the built-in Excel worksheetfunction.frequency)
(Add Jsish)
Line 1,953: Line 1,953:
0.8: **************************************************
0.8: **************************************************
0.9: **************************************************</pre>
0.9: **************************************************</pre>

=={{header|Jsish}}==
<lang javascript>#!/usr/bin/env jsish
"use strict";

function statisticsBasic(args:array|string=void, conf:object=void) {
var options = { // Rosetta Code, Statistics/Basic
rootdir :'', // Root directory.
samples : 0 // Set sample size from options
};
var self = { };
parseOpts(self, options, conf);

function generateStats(n:number):object {
var i, sum = 0, sum2 = 0;
var hist = new Array(10);
hist.fill(0);
for (i = 0; i < n; i++) {
var r = Math.random();
sum += r;
sum2 += r*r;
hist[Math.floor((r*10))] += 1;
}
var mean = sum/n;
var stddev = Math.sqrt((sum2 / n) - mean*mean);
var obj = {n:n, sum:sum, mean:mean, stddev:stddev};
return {n:n, sum:sum, mean:mean, stddev:stddev, hist:hist};
}

function reportStats(summary:object):void {
printf("Samples: %d, mean: %f, stddev: %f\n", summary.n, summary.mean, summary.stddev);
var max = Math.max.apply(summary, summary.hist);
for (var i = 0; i < 10; i++) {
printf("%3.1f+ %-70s %5d\n", i * 0.1, 'X'.repeat(70 * summary.hist[i] / max), summary.hist[i]);
}
return;
}
function main() {
LogTest('Starting', args);
switch (typeof(args)) {
case 'string': args = [args]; break;
case 'array': break;
default: args = [];
}
if (self.rootdir === '')
self.rootdir=Info.scriptDir();

Math.srand(0);
if (self.samples > 0) reportStats(generateStats(self.samples));
else if (args[0] && parseInt(args[0])) reportStats(generateStats(parseInt(args[0])));
else for (var n of [100, 1000, 10000]) reportStats(generateStats(n));

debugger;
LogDebug('Done');
return 0;
}
return main();
}

provide(statisticsBasic, 1);

if (isMain()) {
if (!Interp.conf('unitTest'))
return runModule(statisticsBasic);
;' statisticsBasic unit-test';
; statisticsBasic();

}


/*
=!EXPECTSTART!=
' statisticsBasic unit-test'
statisticsBasic() ==> Samples: 100, mean: 0.534517, stddev: 0.287124
0.0+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 8
0.1+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 11
0.2+ XXXXXXXXXXXXXXXXXXXXXXXXXX 6
0.3+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 10
0.4+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 10
0.5+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 11
0.6+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 8
0.7+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 16
0.8+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 7
0.9+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 13
Samples: 1000, mean: 0.490335, stddev: 0.286562
0.0+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 98
0.1+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 122
0.2+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 85
0.3+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 106
0.4+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 105
0.5+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 101
0.6+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 93
0.7+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 106
0.8+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 98
0.9+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 86
Samples: 10000, mean: 0.499492, stddev: 0.287689
0.0+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 969
0.1+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 992
0.2+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 1067
0.3+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 1011
0.4+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 973
0.5+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 1031
0.6+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 971
0.7+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 999
0.8+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 991
0.9+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 996
0
=!EXPECTEND!=
*/</lang>

{{out}}
<pre>prompt$ jsish -u statisticsBasic.jsi
[PASS] statisticsBasic.jsi</pre>


=={{header|Julia}}==
=={{header|Julia}}==