【发布时间】:2018-02-24 22:09:34
【问题描述】:
如何选择随机哈希键?对于my Flash+Perl card game,我正在尝试从散列中选择一张随机牌,其中键为:“6 黑桃”、“6 梅花”等,如下所示:
my $card;
my $i = 0;
for $card (keys %{$user->{HAND}}) {
last if rand(++$i) < 1;
}
delete $user->{HAND}->{$card};
print "random card: $card\n";
我想知道这是正确的方法还是有更好的方法。
【问题讨论】:
-
完全不正确。
for循环中的$card是 "implicitly local to the loop and regains its former value upon exiting the loop"。也就是说,您的 print 语句中的$card与for循环中的$card是不同的变量。 -
此外,每次通过都会生成一个新数字这一事实会扭曲结果。
标签: perl