【发布时间】:2016-02-19 00:11:00
【问题描述】:
直到today,我认为哈希键在返回时是随机的。但是,keys 上的 perldoc 中的条目另有说明:
哈希条目以明显随机的顺序返回。实际的随机顺序特定于给定的哈希;对两个哈希进行完全相同的一系列操作可能会导致每个哈希的顺序不同。
SO 上还有其他与此相关的条目 - 最相关的是this 问题的公认答案。
以下代码返回明显随机的哈希键:
my %hash;
$hash{$_}++ for 1 .. 100;
say for keys %hash;
谁能帮我理解这不是实际上随机的吗?
【问题讨论】:
-
IIRC,随机化旨在(仅?)在发生碰撞时启动,以尽量减少对效率的影响。我会尝试挖掘相关的邮件列表讨论。
-
这是我尝试回答问题的一个不太复杂的版本Why do the same hash keys have different order when printing? TL:DR:在 perl-5.18 之后,您可以通过多种方式控制行为以及默认设置的许多充分理由 :-)