1 2
my @li = map{ $_->[0] }sort{ $a->[1] cmp $b->[1] } map{[$_, crypt($_,$$)]} (1..9); print "@li";
QuoteWenn ein Wert im Eingangsarray mehrfach vorkommt (genauer: Die gleiche String-Repräsentation hat), dann stehen die alle im gemischten Array direkt hintereinander.
2024-11-27T17:50:31 rostiQuoteWenn ein Wert im Eingangsarray mehrfach vorkommt (genauer: Die gleiche String-Repräsentation hat), dann stehen die alle im gemischten Array direkt hintereinander.
Danke Dir. Das ist richtig. Nur wenn alle Elemente gleich sind, macht eine zufällige Reihenfolge nicht wirklich einen Sinn ;)
QuoteGenerell ist eine "Mischung", die immer auf die gleiche Weise mischt, nicht wirklich schön
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
use strict; use warnings; use Digest::MD5 qw(md5_hex); my @li = ('a'..'z','a'); shuffle(\@li) for 1..5; print "@li\n"; sub shuffle{ my $ref = shift; my @idx = 0 .. scalar @$ref -1; @$ref = map{ $ref->[$_->[0]] } sort{ $a->[1] cmp $b->[1] } map{ [ $_, md5_hex($_.$$.time) ] }@idx; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
use strict; use warnings; my @li = ('a'..'z','a'); shuffle(\@li) for 1..3; sub shuffle{ my $ref = shift; my @idx = 0 .. scalar @$ref -1; @$ref = map{ $ref->[$_->[0]] } sort{ $a->[1] cmp $b->[1] } map{ [ $_, crypt(pack("V",$_),$$) ] }@idx; print "@$ref\n"; }