如何在哈希中混洗值?

Fra*_*ank 5 perl shuffle

我有一个字符串ID哈希.什么是洗牌的最佳方法?

例如,我的哈希分配以下ID:

this => 0
is => 1
a => 2 
test => 3
Run Code Online (Sandbox Code Playgroud)

现在我想随意洗牌.一个示例结果将是:

this => 1
is => 0
a => 3
test => 2
Run Code Online (Sandbox Code Playgroud)

Mat*_*Mat 7

您可以使用该shuffle方法List::Util来帮助:

use List::Util qw(shuffle);

...

my @values = shuffle(values %hash);
map { $hash{$_} = shift(@values) } (keys %hash);
Run Code Online (Sandbox Code Playgroud)