Stem-and-leaf plot/Data generator: Difference between revisions
Content added Content deleted
(Should produce a bell curve distribution for each hump, now.) |
(A note about variable names.) |
||
(One intermediate revision by one other user not shown) | |||
Line 1: | Line 1: | ||
Written to generate data sets for the [[Stem-and-leaf plot]] task. |
Written to generate data sets for the [[Stem-and-leaf plot]] task. Statistics aren't my field or area of significant expertise, so some of the variable names might represent my homebrew understanding more than official terminology. --[[User:Short Circuit|Michael Mol]] 19:34, 14 December 2009 (UTC) |
||
<lang perl>#!/usr/bin/perl |
<lang perl>#!/usr/bin/perl |
||
Line 15: | Line 15: | ||
sub genhump |
sub genhump |
||
{ |
{ |
||
my $offset = |
my ($offset, $width, $pointcount, $slope) = @_; |
||
my $width = shift; |
|||
my $pointcount = shift; |
|||
my $slope = shift; |
|||
my $diecount = $slope; |
my $diecount = $slope; |
||
Line 24: | Line 21: | ||
my @ret; |
my @ret; |
||
foreach (1 .. $pointcount) |
|||
while($pointcount-- > 0) |
|||
{ |
{ |
||
my $point = $offset; |
my $point = $offset; |
||
foreach (1 .. $diecount) |
|||
{ |
{ |
||
$point += rand($range * 10000) / 10000; |
$point += rand($range * 10000) / 10000; |
||
Line 38: | Line 35: | ||
} |
} |
||
my @list = () |
my @list = (&genhump(8, 3, 5, 3), |
||
⚫ | |||
push @list, &genhump(8, 3, 5, 3); |
|||
⚫ | |||
my @shuffled = &shuffle(@list); |
my @shuffled = &shuffle(@list); |
||
print " |
print "@shuffled\n";</lang> |
||
foreach ( @shuffled ); |
|||
</lang> |
Latest revision as of 19:34, 14 December 2009
Written to generate data sets for the Stem-and-leaf plot task. Statistics aren't my field or area of significant expertise, so some of the variable names might represent my homebrew understanding more than official terminology. --Michael Mol 19:34, 14 December 2009 (UTC)
<lang perl>#!/usr/bin/perl use strict;
- The shuffle is taken from http://rosettacode.org/wiki/Knuth_shuffle
sub shuffle
{my @a = @_; foreach my $n (1 .. $#a) {my $k = int rand $n + 1; $k == $n or @a[$k, $n] = @a[$n, $k];} return @a;}
- The greater your pointcount to your width, the more sparse your result.
sub genhump { my ($offset, $width, $pointcount, $slope) = @_;
my $diecount = $slope; my $range = $width / $diecount;
my @ret; foreach (1 .. $pointcount) { my $point = $offset; foreach (1 .. $diecount) { $point += rand($range * 10000) / 10000; }
push @ret, int($point); }
return @ret; }
my @list = (&genhump(8, 3, 5, 3),
&genhump(12, 3, 5, 6));
my @shuffled = &shuffle(@list);
print "@shuffled\n";</lang>