I would like to have a program that would produce an output likemy $Number_of_geographical_regions = 4; my $Number_of_generations = 3;
.... where the order of the numbers is random.Generation 1: Geographical regions: 2 3 1 4 Generation 2: Geographical regions: 4 2 3 1 Generation 3: Geographical regions: 1 4 3 2 <br>
However I am certain that I need to start again. Please can someone help me.my $nregions = 354; # 354; my $number_of_replicates = 3; my %seen; foreach my $generation (1..$number_of_replicates) { ## TEMP my @members = random_subset_X($nregions, $nregions );#$number_of_rep +licates ); # 5 element subsets, e.g. #### THIS BIT NEEDS SORTING OU +T my $key = join(" ", @members); # note: members already sorted redo if $seen{$key}; # make sure the subsets are unique $seen{$key} = 1; print "\n\nI'm about to enter the insert subset subroutine\n\n"; insert_subset($generation, @members); } ## TEMP sub random_subset_X { my ($n, $k) = @_; # $k member subset of 1..$n. # # $n is no. of re +gions, $k no. of replicates my %member; while ($k > 0) { my $x = int(rand()*$n)+1; # generates random number 1..$n. redo if $member{$x}; $member{$x} = 1; $k--; } continue { $k--; } sort keys %member; } sub insert_subset { my ( $generation, @members) = @_; for my $x (@members) { # $sth_insert_into_random->execute($generation, $x); print "$generation\t$x\n"; } }
In reply to Coding random numbers by Win
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |