Thread shuffle in Schleife laufen lassen
(15 answers)
Opened by qwe123qwe at 2014-12-27 17:42
ich hab das jetzt erst einmal so umgesetzt :
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 #!/usr/bin/perl # Prog mischen.pl use strict; use warnings; my @alteliste = (); my @neueliste = (); my %bereits_gezogen = (); my $gezogen; # alte Datei einlesen open(UNGEMISCHTEDATEI,"<ungemischte_liste") || die "kann ungemischte Datei nicht zum Einlesen öffnen : $!"; while (my $zeile = <UNGEMISCHTEDATEI>) { push (@alteliste,$zeile); } close (UNGEMISCHTEDATEI); # ziehen ohne Zurücklegen for ( 1 .. $#alteliste ) { $gezogen = int (rand($#alteliste)); redo if exists $bereits_gezogen{$gezogen}; push (@neueliste, $alteliste[$gezogen]); $bereits_gezogen{$gezogen}++; } # neue Datei schreiben open(GEMISCHTEDATEI,">gemischte_liste") || die "kann gemischte Datei nicht zum Schreiben öffnen : $!"; foreach (@neueliste) { print GEMISCHTEDATEI ("$_"); } close (GEMISCHTEDATEI); Die neue Liste ist noch um eine Zeile kürzer als die alte. Sieht jemand auf die Schnelle, wie ich die noch herbekomme ? Ich versuch jetzt folgendermaßen die "Qualität" der Mischerei abzuschätzen: ich habe am Anfang meiner Testdatei 10 Zeilen, die mit a angehen und am Ende 10 die mit z angehen. Dazwischen sind 50 Zeilen, die weder mit a noch mit z angehen. Nach dem Mischen zähle ich die Zeilen, die in den ersten Bzw. letzten 10 Zeilen jeweils mit a bzw. z angehen. Bei einer guten Durchmischung sollten bei mehreren Versuchen im Durchschnitt unter den ersten wie auch unter den letzten 10 Zeilen genauso viele mit a wie mit z angehen. Stimmt das so oder habe ich da einen Denkfehler ? Last edited: 2015-01-02 19:00:29 +0100 (CET) |