Thread Zufalls-LOTTO-Zahlen
(9 answers)
Opened by pax77 at 2008-01-29 19:55
Hallo, bin sei ein paar Monaten dabei Perl zu programmieren. Anbei ein kleines Prgramm um Zufallszahlen für LOTTO zu generieren. Würde mich freuen wenn jemand etwas zum Stil schreiben könnte und/oder ob sowas taugt z.B. als Beispielcode für Bewerbungen ...
Danke! pax77 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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 #!C:/Perl/bin/perl.exe # # v0.96 makemeritch.pl by pax77 # # Erzeugt zufällige Lotto-Zahlen # 12 Felder mit jeweils maximal $n Überschneidungen # use strict; my $n = 2; # Anzahl der erlaubten Überschneidungen (2 ist Minimalwert) my $DEBUG = 1; # Debug-Level 0, 1 my $try = 0; my @sum; NOTE: while (@sum < 12) { # 12 Zahlenreihen werden erzeugt my @lotto; # push(@lotto, 7, 13); # Wenn es Lieblingszahlen gibt (Sollten nicht mehr als $n-2 sein ...) LOTTO: while (@lotto < 6) { # Mit jeweils 6 Zahlen my $zahl = &GetNum(); # Zufallszahl zwischen 1 und 49 foreach (@lotto) { next LOTTO if $_ == $zahl; # Jede Zahl nur ein mal } push(@lotto, $zahl); } # Wenn zu viele Zahlen doppelt mit einer alten Zahlenreihe -> redo $try++, redo NOTE if &CheckDouble(\@lotto); push(@sum, \@lotto); print "($try)\t" if $DEBUG; foreach (sort {$a <=> $b} @lotto) { # Sortierte und formatierte Ausgabe print " " if $_ < 10; print $_." "; } print "\n"; } sub CheckDouble { my ($check) = @_; my $suc; MAIN: foreach (@sum) { # Jede bereits erzeugte Zahlenreihe my $g = 0; foreach (@$_) { # Jede Zahl der jeweiligen Zahlenreihe my $temp = $_; foreach (@$check) { # Vergleiche mit den neuen Zahlen $g++ if $_ == $temp; $suc = 1, last MAIN if $g == $n; # Wenn zu viele gleich -> return TRUE } } } return $suc; } sub GetNum { return int(rand 49) + 1; } |