Collect Statistics efficiently and easily

Paul Backus snarwin at gmail.com
Tue Sep 17 14:06:41 UTC 2019


On Tuesday, 17 September 2019 at 01:53:39 UTC, Brett wrote:
> Many times I have to get statistical info which is simply 
> compute statistics on a data set that may be generating or 
> already generated.
>
> The code usually is
>
> M = max(M, v);
> m = min(m, v);
>
> but other things like standard deviation, mean, etc might need 
> to be computed.
>
> This may need to be done on several data sets simultaneously.
>
> is there any way that one could just compute them in one line 
> that is efficient, probably using ranges? I'd like to avoid 
> having to loop through a data set multiple times as it would be 
> quite inefficient.

You can use `std.algorithm.fold` to compute multiple results in a 
single pass:

auto stats = v.fold!(max, min);
M = stats[0];
m = stats[1];


More information about the Digitalmars-d-learn mailing list