我在这里头疼。我想要移动一系列位置,然后使用相同的模式对另一个数组进行洗牌:
use warnings;
use List::Util 'shuffle';
my @order = qw/1 3 2 0/;
my @words = qw/test this a is/;
@new_order = shuffle(@order);
#some code.... ?
print @words; #this is a test
结果:
randomized words: this a is test.
randomized Order: 0 2 1 3.
sort: this is a test.
下次运行
randomized words: test a this is.
randomized Order: 2 3 1 0.
sort: this is a test.
and so on...
我已经尝试过,但说实话,我只是完全不解:/
答案 0 :(得分:1)
如果您只想使用相同的模式对两个数组进行混洗,请执行以下操作:
use warnings;
use List::Util 'shuffle';
my @order = qw/1 3 2 0/;
my @words = qw/test this a is/;
my @shuffle = shuffle(0..$#order);
my @new_order = @order[@shuffle];
my @new_words = @words[@shuffle];
如果它更复杂,那么查看生成示例输出的代码(在您要求帮助的洗牌部分之后)真的很有帮助。
答案 1 :(得分:0)
最简单的解决方案只是在您自己的程序中提供some code.... ?
注释。但是对shuffle
的调用是多余的,它的作用只是因为你大概选择了你的数字
use strict;
use warnings;
use List::Util 'shuffle';
my @order = qw/ 1 3 2 0 /;
my @words = qw/ test this a is /;
my @new_order = shuffle(@order);
@words = @words[@order];
print "@words\n";
this is a test