Statistics/Basic: Difference between revisions

Content added Content deleted
m (→‎{{header|REXX}}: removed the last blank line. -- ~~~~)
(Updated D entry)
Line 530: Line 530:
return tuple(0.0L, 0.0L);
return tuple(0.0L, 0.0L);


real sx=0.0, sxx=0.0;
real sx = 0.0, sxx = 0.0;
ulong n;
ulong n;
foreach (x; numbers) {
foreach (x; numbers) {
Line 540: Line 540:
}
}


void showHistogram(R)(R numbers) {
void showHistogram01(R)(R numbers) {
enum maxWidth = 50; // characters
enum maxWidth = 50; // N. characters.
ulong[10] bins;
ulong[10] bins;
foreach (x; numbers) {
foreach (x; numbers) {
enforce(x >= 0.0 && x <= 1.0);
immutable index = cast(size_t)(x * bins.length);
bins[cast(size_t)(x * 10)]++;
enforce(index >= 0 && index < bins.length);
bins[index]++;
}
}
immutable real maxFreq = reduce!max(bins);
immutable real maxFreq = bins.reduce!max;


alias std.array.replicate R;
alias std.array.replicate R;
foreach (n, i; bins)
foreach (n, i; bins)
writefln(" %3.1f: %s", n / 10.0,
writefln(" %3.1f: %s", n / cast(real)bins.length,
R("*", cast(int)(i / maxFreq * maxWidth)));
R("*", cast(int)(i / maxFreq * maxWidth)));
writeln();
writeln;
}
}


version (statistics_basic_main) {
void main() {
import std.random;
void main() {
foreach (p; 1 .. 7) {
import std.random;

auto n = iota(10L ^^ p).map!(_ => uniform(0.0L, 1.0L))();
writeln(10L ^^ p, " numbers:");
foreach (immutable p; 1 .. 7) {
writefln(" Mean: %8.6f, SD: %8.6f", meanStdDev(n).tupleof);
auto n = iota(10L ^^ p).map!(_ => uniform(0.0L, 1.0L));
showHistogram(n);
writeln(10L ^^ p, " numbers:");
writefln(" Mean: %8.6f, SD: %8.6f", n.meanStdDev.tupleof);
n.showHistogram01;
}
}
}
}</lang>
}</lang>
Compile with "-version=statistics_basic_main" to run the main function.
{{out}}
{{out}}
<pre>10 numbers:
<pre>10 numbers: