Мне нужно знать, как я могу заполнить массив в perl случайным образом. Например: я хочу объявить массив, содержащий 10 элементов, меньших 60. Может кто-нибудь объяснить мне, как я могу это сделать или отправить мне какой-нибудь путеводитель? Я был бы так благодарен.Случайная сортировка массива - perl
ответ
Я предполагаю, что вы имели в виду «десять неотрицательные целые числа меньше, чем 60».
С возможностью повторами:
my @rands = map { int(rand(60)) } 1..10;
Например,
$ perl -E'say join ",", map { int(rand(60)) } 1..10;'
0,28,6,49,26,19,56,32,56,16 <-- 56 is repeated
$ perl -E'say join ",", map { int(rand(60)) } 1..10;'
15,57,50,16,51,58,46,7,17,53
$ perl -E'say join ",", map { int(rand(60)) } 1..10;'
13,57,26,47,30,14,47,55,39,39 <-- 47 and 39 are repeated
без возможности повторов:
use List::Util qw(shuffle);
my @rands = (shuffle 0..59)[0..9];
Например,
$ perl -MList::Util=shuffle -E'say join ",", (shuffle 0..59)[0..9];'
13,50,8,21,11,24,28,51,55,38
$ perl -MList::Util=shuffle -E'say join ",", (shuffle 0..59)[0..9];'
1,0,58,46,47,49,52,33,5,13
$ perl -MList::Util=shuffle -E'say join ",", (shuffle 0..59)[0..9];'
19,43,45,49,23,53,2,38,59,35
Я не рассматривал использование тасования, как это. +1 – Toto
Итак, когда я хочу заполнить массив, содержащий элементы «n», могу ли я использовать: «@rand = map {int (rand (60))} n;"? Или создайте цикл «для» и введите счет таким образом ?: «my $ tab [$ i] = map {int (rand (60))};". Я использовал второй вариант до момента, и мой компилятор показал ошибки. Что не так? – Martini
Первый будет присваивать только один элемент, и мне будет трудно найти что-то, что не соответствует второму фрагменту. – ikegami
Вы можете просто сделать:
my @r = map int(rand(60)), 0..9;
say Dumper\@r;
Вы можете воспользоваться случайной сортировки в Perl хэш-ключей. Это заполнит массив из 10 элементов случайным образом каждый раз, когда вы запускаете его:
use warnings;
use strict;
my @nums = (1 .. 60);
my %data;
$data{$_}++ foreach @nums;
my $count = 0;
my @random;
foreach (keys %data){
$count++;
push @random, $_ if $count <= 10;
}
- 1. Случайная сортировка массива
- 2. Случайная сортировка массива
- 3. Сортировка массива в Perl
- 4. Perl сортировка 3d-массива
- 5. Пользовательская сортировка массива в Perl
- 6. Случайная сортировка Access запрос
- 7. Случайная сортировка в MySQL
- 8. случайная сортировка слиянием
- 9. ASP.NET Gridview случайная сортировка столбцов
- 10. Сортировка массива хэшей в Perl ключом
- 11. Сортировка массива не удалась в Perl
- 12. Сортировка массива Hash несколько ключей Perl
- 13. сортировка массива PERL по дате на ASCII
- 14. Perl: Сортировка массива после значения хэша
- 15. Сортировка в Perl
- 16. Perl Сортировка Хэш Массивы
- 17. Случайная строка из массива Excel
- 18. PHP случайная ссылка из массива
- 19. Python: случайная матрица из массива
- 20. Быстрая случайная перестановка двоичного массива
- 21. Случайная отправка массива в AutoHotKey
- 22. Сформировать Случайная строка из массива
- 23. Случайная строка текста из массива
- 24. случайная сортировка каждый раз, когда запрос выполняется
- 25. Сортировка массива Ссылки на Хэш
- 26. Сортировка массива по двум параметрам
- 27. Сортировка строк с Perl
- 28. Perl: Сортировка многомерного хэша
- 29. сортировка хэш в Perl
- 30. Perl Сортировка HoAoH/Scalar
Используйте цикл и команду push, чтобы поместить новое случайное число в массив с каждой итерацией цикла. –
См. 'Shuffle()' in 'perldoc List :: Util' http://perldoc.perl.org/List/Util.html#@[email protected]' List :: Util' является стандартным модулем который установлен с Perl. Список всех стандартных модулей см. В разделе «perldoc perlmodlib» http://perldoc.perl.org/perlmodlib.html – shawnhcorey
@shawnhcorey: 'shuffle' возвращает список в произвольном порядке, он не создает случайные значения. – Toto