Normal distribution
sub normdist ($m, $σ) {
my $r = sqrt -2 * log rand;
my $Θ = τ * rand;
$r * cos($Θ) * $σ + $m;
}
sub MAIN ($size = 100000, $mean = 50, $stddev = 4) {
my @dataset = normdist($mean,$stddev) xx $size;
my $m = [+](@dataset) / $size;
say (:$m);
my $σ = sqrt [+](@dataset X** 2) / $size - $m**2;
say (:$σ);
(my %hash){.round}++ for @dataset;
my $scale = 180 * $stddev / $size;
constant @subbar = < ⎸ ▏ ▎ ▍ ▌ ▋ ▊ ▉ █ >;
for %hash.keys».Int.minmax(+*) -> $i {
my $x = (%hash{$i} // 0) * $scale;
my $full = floor $x;
my $part = 8 * ($x - $full);
say $i, "\t", '█' x $full, @subbar[$part];
}
}
Output:
"m" => 50.006107405837142e0
"σ" => 4.0814435639885254e0
33 ⎸
34 ⎸
35 ⎸
36 ▏
37 ▎
38 ▊
39 █▋
40 ███⎸
41 █████▊
42 ██████████⎸
43 ███████████████▋
44 ███████████████████████▏
45 ████████████████████████████████▌
46 ███████████████████████████████████████████▍
47 ██████████████████████████████████████████████████████▏
48 ███████████████████████████████████████████████████████████████▏
49 █████████████████████████████████████████████████████████████████████▋
50 ███████████████████████████████████████████████████████████████████████▊
51 █████████████████████████████████████████████████████████████████████▌
52 ███████████████████████████████████████████████████████████████⎸
53 ██████████████████████████████████████████████████████▎
54 ███████████████████████████████████████████⎸
55 ████████████████████████████████▌
56 ███████████████████████▍
57 ███████████████▉
58 █████████▉
59 █████▍
60 ███▍
61 █▋
62 ▊
63 ▍
64 ▏
65 ⎸
66 ⎸
67 ⎸
Last updated