Statistics/Normal distribution: Difference between revisions

Added Perl example
(Added Perl example)
Line 1,914:
11.0915:
</pre>
 
=={{header|Perl}}==
{{trans|Perl 6}}
<lang perl>use constant pi => 3.14159265;
use List::Util qw(sum reduce min max);
 
sub normdist {
my($m, $sigma) = @_;
my $r = sqrt -2 * log rand;
my $theta = 2 * pi * rand;
$r * cos($theta) * $sigma + $m;
}
 
$size = 100000; $mean = 50; $stddev = 4;
 
push @dataset, normdist($mean,$stddev) for 1..$size;
 
my $m = sum(@dataset) / $size;
print "m = $m\n";
 
my $sigma = sqrt( (reduce { $a + $b **2 } 0,@dataset) / $size - $m**2 );
print "sigma = $sigma\n";
 
$hash{int $_}++ for @dataset;
my $scale = 180 * $stddev / $size;
my @subbar = < ⎸ ▏ ▎ ▍ ▌ ▋ ▊ ▉ █ >;
for $i (min(@dataset)..max(@dataset)) {
my $x = ($hash{$i} // 0) * $scale;
my $full = int $x;
my $part = 8 * ($x - $full);
my $t1 = '█' x $full;
my $t2 = $subbar[$part];
print "$i\t$t1$t2\n";
}
</lang>
{{out}}
<pre style="height:35ex">32 ⎸
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 ⎸</pre>
 
=={{header|Perl 6}}==
2,392

edits