Я пытаюсь написать сценарий perl
, который создает полный набор уникальных случайных чисел.
скажем, у меня есть числа от 1
до 50
Я хочу создать 5
наборов с 5
уникальными номерами на набор, но не повторять число в любом наборе. Приведенный ниже скрипт генерирует числа случайно и уникально в каждой строке, но числа повторяются в других строках. Таким образом, текущий результат будет выглядеть примерно так:
20 11 28 5 10
5 23 20 42 14
1 38 6 7 9
25 0 16 35 17
23 0 42 5 8
Как видно из приведенного выше результата, числа 5
, 0
и 23
и т. Д. Были повторены. Я на самом деле хочу полностью исключить 0
с и не повторять ни одного числа. Приведенный ниже ожидаемый результат демонстрирует желаемый результат.
2 20 12 15 9
19 10 42 13 3
7 38 50 1 33
6 22 49 4 21
48 8 25 11 3
Выше не имеет 0
и никакие числа не повторяются.
Вот мой текущий сценарий.
use strict;
use warnings;
for (1..5) {
my @numbers;
my %unique;
for (1..5) {
my $number = int rand(50);
redo if $unique{$number}++;
push @numbers, $number;
}
print join(' ', @numbers), "\n";
}
Я был бы очень признателен за любую возможную помощь и искренне надеюсь, что мой вопрос понятен.