use strict; use warnings; my ($x, $y, $weight, @r) = (5, 10, 2); push @r, multirand($x, $y, $weight) for 1..10000; display(\@r, 50); sub multirand { my ($x, $y, $weight) = @_; return $x * $y ** (rand() ** $weight * (rand() > 0.5 ? 1 : -1)); } sub display { my ($r1, $max) = @_; my (@r2, $skip, $i); $skip = ($#$r1 + 1) / 40; @r2 = sort { $a <=> $b } @$r1; for ($i = 0; $i <= $#r2; $i += $skip) { print 'x' x ($r2[$i] / $max * 80 + 0.5) . "\n"; } } #### x x x xx xx xx xxx xxx xxx xxxx xxxx xxxxx xxxxx xxxxxx xxxxxx xxxxxxx xxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxxx xxxxxxxxx xxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxx xxxxxxxxxxxxx xxxxxxxxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx