Statistics/Basic: Difference between revisions

→‎{{header|Perl 6}}: arguably simpler version
(→‎{{header|Perl 6}}: arguably simpler version)
Line 1,197:
 
=={{header|Perl 6}}==
<lang perl6>subfor generate_statistics($n100, =1_000, 100)10_000 -> $N {
mysay "size: $then = timeN";
my $sum@data = 0rand xx $N;
printf "mean: %f\n", my $sum2mean = 0$N R/ [+] @data;
sayprintf "stddev: $stddev%f\n";, sqrt
my @hist = 0 xx 10;
my $variance = $mean**2 R- $N R/ [+] @data »**» 2;
for ^$n {
for sort *.key, @data.classify( (10 * *).Int / 10 ) {
my $r = rand;
sayprintf "0%.$i1f %s\tn", .key, '=' x (500 * $bin.value.elems / $nN);
$sum += $r;
$sum2 += $r ** 2;
++@hist[10 * $r];
}
say "";
my $mean = $sum / $n;
my $stddev = sqrt($sum2 / $n - $mean * $mean);
 
say "size: $n";
say "mean: $mean";
say "stddev: $stddev";
for @hist.kv -> $i, $bin {
say "0.$i\t", '=' x (500 * $bin / $n);
}
say "(elapsed: {time - $then})";
say "";
}
 
# This doesn't terminate, so ^C when you get bored.
for 100, 1_000, 10_000 ... * -> $n {
generate_statistics $n;
}</lang>
{{out}}
Line 1,239 ⟶ 1,222:
0.8 ======================================================================
0.9 =============================================
(elapsed: 0.023430109024047852)
 
size: 1000
Line 1,254 ⟶ 1,236:
0.8 ==============================================
0.9 ========================================================
(elapsed: 0.083790063858032227)
 
size: 10000
Line 1,269 ⟶ 1,250:
0.8 ====================================================
0.9 ==================================================
(elapsed: 0.5168910026550293)
 
size: 100000
Line 1,300 ⟶ 1,280:
0.9 =================================================
(elapsed: 47.345431089401245)</pre>
 
=={{header|PicoLisp}}==
The following has no limit on the number of samples. The 'statistics' function accepts an executable body 'Prg', which it calls repeatedly to get the samples.
1,935

edits