in reply to Re: Help with sorting/randomizing?
in thread Help with sorting/randomizing?
Yep, that's heading in the direction I had been thinking of. However that doesn't really generate the random picking that I think you want. Consider the following:
use strict; use warnings; my %ips; while (<DATA>) { next if ! /^(\d+)\.(\d+)\.(\d+)\.(\d+)/; push @{$ips{$1}{$2}{$3}}, $4; } my @selected; while (my @picks = pickEm(\%ips)) { push @selected, @picks; } print join "\n", @selected; sub pickEm { my ($root) = @_; return splice @$root, rand(@$root), 1 if 'ARRAY' eq ref $root; my @keys = keys %$root; while (@keys) { my $key = splice @keys, rand(@keys), 1; my $pick = pickEm($root->{$key}); return "$key.$pick" if defined $pick; delete $root->{$key}; } return; } __DATA__ #Group A 184.75.65.68 #Group B 184.75.122.146 184.75.122.147 184.75.122.148 #Group C 64.3.71.98 64.3.71.99 64.3.71.100 64.3.71.106 #Group D 64.3.73.17 64.3.73.18 64.3.73.19 64.3.73.20 #Group E 66.1.73.21 66.1.73.22 66.1.73.23
Prints (for one random run):
66.1.73.22 64.3.71.106 184.75.122.146 184.75.65.68 64.3.71.100 64.3.71.98 66.1.73.23 66.1.73.21 184.75.122.148 64.3.71.99 64.3.73.18 64.3.73.17 184.75.122.147 64.3.73.20 64.3.73.19
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Help with sorting/randomizing?
by countingcrows (Initiate) on Mar 26, 2012 at 06:46 UTC | |
by GrandFather (Saint) on Mar 26, 2012 at 09:08 UTC |