Jump to content

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

Cookies help us deliver our services. By using our services, you agree to our use of cookies.