use strict;
#原始序列
my @arr = 1..100;
#新的三个暂用序列
my @a;
my @b;
my @c;
# 从3到N的序列的随机平均分配.
while (@arr > 2) {
my $idx_a = 0;
my $idx_b = 0;
my $idx_c = 0;
$idx_a = int(rand($#arr + 1));
do {
$idx_b = int(rand($#arr + 1));
} while ($idx_a == $idx_b);
do {
$idx_c = int(rand($#arr + 1));
} while ($idx_c == $idx_a || $idx_c == $idx_b);
push(@a, $arr[$idx_a]);
push(@b, $arr[$idx_b]);
push(@c, $arr[$idx_c]);
undef $arr[$idx_a];
undef $arr[$idx_b];
undef $arr[$idx_c];
my @tmp = ();
for(my $j = 0; $j < @arr; $j++) {
push(@tmp, $arr[$j]) if defined $arr[$j];
}
@arr = @tmp;
}
# 最后1个或者2个的随机分配
my $idx_1 = int(rand(3));
my $idx_2 = 0;
do {
$idx_2 = int(rand(3));
} while ($idx_1 == $idx_2);
if (@arr == 1) {
push(@a, $arr[0]) if $idx_1 == 0;
push(@b, $arr[0]) if $idx_1 == 1;
push(@c, $arr[0]) if $idx_1 == 2;
} elsif (@arr == 2) {
push(@a, $arr[0]) if $idx_1 == 0;
push(@b, $arr[0]) if $idx_1 == 1;
push(@c, $arr[0]) if $idx_1 == 2;
push(@a, $arr[1]) if $idx_2 == 0;
push(@b, $arr[1]) if $idx_2 == 1;
push(@c, $arr[1]) if $idx_2 == 2;
}
print @a;
print @b;
print @c;
#至于perl中的 rand() 函数效率就当它是浮云吧.