随机填充数组 - perl
Random flling the array - perl
我需要知道如何在 perl 中随机填充数组。例如:我想声明一个包含 10 个小于 60 的元素的数组。有人可以解释我该怎么做或给我发送任何指南吗?我将不胜感激。
你可以简单地做:
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;
}
我假设你的意思是 "ten non-negative integers less than 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
我需要知道如何在 perl 中随机填充数组。例如:我想声明一个包含 10 个小于 60 的元素的数组。有人可以解释我该怎么做或给我发送任何指南吗?我将不胜感激。
你可以简单地做:
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;
}
我假设你的意思是 "ten non-negative integers less than 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