Cumulative standard deviation: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) (Rename Perl 6 -> Raku, alphabetize, minor clean-up) |
No edit summary |
||
Line 1,045: | Line 1,045: | ||
8 :> 2.0 |
8 :> 2.0 |
||
</pre> |
</pre> |
||
=={{header|Crystal}}== |
|||
{{trans|Ruby}} |
|||
===Using an object to keep state:=== |
|||
<lang ruby>class StdDevAccumulator |
|||
def initialize |
|||
@n, @sum, @sum2 = 0, 0.0, 0.0 |
|||
end |
|||
def <<(num) |
|||
@n += 1 |
|||
@sum += num |
|||
@sum2 += num**2 |
|||
Math.sqrt (@sum2 * @n - @sum**2) / @n**2 |
|||
end |
|||
end |
|||
sd = StdDevAccumulator.new |
|||
i = 0 |
|||
[2,4,4,4,5,5,7,9].each { |n| puts "adding #{n}: stddev of #{i+=1} samples is #{sd << n}" }</lang> |
|||
{{out}} |
|||
<pre> |
|||
adding 2: stddev of 1 samples is 0.0 |
|||
adding 4: stddev of 2 samples is 1.0 |
|||
adding 4: stddev of 3 samples is 0.9428090415820634 |
|||
adding 4: stddev of 4 samples is 0.8660254037844386 |
|||
adding 5: stddev of 5 samples is 0.9797958971132712 |
|||
adding 5: stddev of 6 samples is 1.0 |
|||
adding 7: stddev of 7 samples is 1.3997084244475304 |
|||
adding 9: stddev of 8 samples is 2.0 |
|||
</pre> |
|||
=={{header|D}}== |
=={{header|D}}== |