#!/usr/bin/perl -w use strict; my $desired_mean = 250; my $desired_deviation = 20; my $total = 1000; my @numbers; gen_numbers(\@numbers, $desired_mean, $desired_deviation, $total); sub gen_numbers { my ($array_ref, $mean, $deviation, $total) = @_; my $offset = $deviation * 1.75; my $low = $mean - $offset; my $high = $mean + $offset; for (0 .. $total) { my $number; while (1) { $number = int(rand($high)) + 1; last if ($number >= $low && $number <= $high); } push @{$array_ref} , $number } } my $sum; $sum += $_ for @numbers; my $mean = $sum / $total; my $scratch; for (@numbers) { $scratch += (($_ - $mean) * ($_ - $mean)); } my $standard_deviation = sqrt($scratch / ($total - 1)); print "Desired Mean: $desired_mean\n"; print "Mean: $mean\n"; print "\n"; print "Desired Standard Deviation: $desired_deviation\n"; print "Standard Deviation: $standard_deviation\n"; __END__ Desired Mean: 250 Mean: 250.06707 Desired Standard Deviation: 20 Standard Deviation: 19.9571308028178