我倾向于使用 shuffle 方法来随机化列表元素的顺序。例如,下面是一个混淆了一个小游戏角色的代码:
sub assign_roles {
my ( $role_num_map ) = @_;
my @roles;
for my $role ( keys %$role_num_map ) {
next if $role_num_map->{$role} == 0;
push @roles, $role for ( 1 .. $role_num_map->{$role} );
}
my @shuffled_roles = shuffle @roles;
}
我的问题是,“洗牌”如何随机化订单?它使用什么方法? 我怎样才能从 @shuffled_roles 回到 $role_num_map ?