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"; } }