Cumulative standard deviation: Difference between revisions

Rename Perl 6 -> Raku, alphabetize, minor clean-up
(Rename Perl 6 -> Raku, alphabetize, minor clean-up)
Line 2,889:
0.866025403784439
0.979795897113272
1.39970842444753
2</pre>
 
=={{header|Perl 6}}==
{{works with|Rakudo Star|2010.08}}
Using a closure:
<lang perl6>sub sd (@a) {
my $mean = @a R/ [+] @a;
sqrt @a R/ [+] map (* - $mean)**2, @a;
sub sdaccum {
my @a;
return { push @a, $^x; sd @a; };
my &f = sdaccum;
say f $_ for 2, 4, 4, 4, 5, 5, 7, 9;</lang>
 
Using a state variable:
<lang perl6># remember that <(x-<x>)²> = <x²> - <x>²
sub stddev($x) {
sqrt
(.[2] += $x**2) / ++.[0] -
((.[1] += $x) / .[0])**2
given state @;
 
say stddev $_ for <2 4 4 4 5 5 7 9>;</lang>
 
{{out}}
<pre>0
0.942809041582063
0.866025403784439
0.979795897113271
1
1.39970842444753
Line 3,288 ⟶ 3,251:
(last (map running-stddev '(2 4 4 4 5 5 7 9)))
</lang>
 
=={{header|Perl 6Raku}}==
(formerly Perl 6)
{{works with|Rakudo Star|2010.08}}
Using a closure:
<lang perl6>sub sd (@a) {
my $mean = @a R/ [+] @a;
sqrt @a R/ [+] map (* - $mean)**2, @a;
sub sdaccum {
my @a;
return { push @a, $^x; sd @a; };
my &f = sdaccum;
say f $_ for 2, 4, 4, 4, 5, 5, 7, 9;</lang>
 
Using a state variable:
<lang perl6># remember that <(x-<x>)²> = <x²> - <x>²
sub stddev($x) {
sqrt
(.[2] += $x**2) / ++.[0] -
((.[1] += $x) / .[0])**2
given state @;
 
say stddev $_ for <2 4 4 4 5 5 7 9>;</lang>
 
{{out}}
<pre>0
0.942809041582063
0.866025403784439
0.979795897113271
1.39970842444753
2</pre>
 
=={{header|REXX}}==
10,327

edits