Как выбрать случайный хеш-ключ? Для 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";
Интересно, если это правильный путь или если это лучший способ.
Не правильно вообще. «$ Card» в цикле 'for' является [« неявно локальным в цикле и восстанавливает прежнее значение после выхода из цикла »] (http://search.cpan.org/perldoc?perlsyn#Foreach_Loops). То есть '$ card' в вашем заявлении на печать является другой переменной, чем' $ card' в цикле 'for'. – mob
Кроме того, факт, что вы генерируете новый номер каждый проход, искажает результат. – ikegami