Cumulative standard deviation: Difference between revisions
Rename Perl 6 -> Raku, alphabetize, minor clean-up
Thundergnat (talk | contribs) (Rename Perl 6 -> Raku, alphabetize, minor clean-up) |
|||
Line 2,889:
0.866025403784439
0.979795897113272
1▼
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▼
1▼
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>
(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
▲1
▲0.942809041582063
▲0.866025403784439
▲0.979795897113271
▲1
▲1.39970842444753
▲2</pre>
=={{header|REXX}}==
|