Come si seleziona una chiave hash casuale? Per my Flash+Perl card game Sto cercando di scegliere una carta a caso da un hash in cui le chiavi sono: "6 picche", "6" club, ecc in questo modo:Selezione di una chiave casuale da un hash
my $card;
my $i = 0;
for $card (keys %{$user->{HAND}}) {
last if rand(++$i) < 1;
}
delete $user->{HAND}->{$card};
print "random card: $card\n";
Mi chiedo se è il modo corretto o se ci è un modo migliore.
non corretta a tutti. La '$ card' nel ciclo' for' è ["implicitamente locale al ciclo e recupera il suo valore precedente all'uscita dal ciclo"] (http://search.cpan.org/perldoc?perlsyn#Foreach_Loops). Cioè, la '$ card' nella tua dichiarazione di stampa è una variabile diversa da' $ card' nel ciclo 'for'. – mob
Inoltre, il fatto che si generi un nuovo numero ogni passaggio altera il risultato. – ikegami