Thread Zufalls-LOTTO-Zahlen
(9 answers)
Opened by pax77 at 2008-01-29 19:55
ust strict ist schonmal gut aber mit use warnigs wäre es noch besser :)
die sub könnte man auch GetRandNum nennen und ausserdem haben wir hier im forum perl button mit der code besser aussieht. 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 #!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; use warnings; 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; printf "%2d ", $_ for sort {$a <=> $b} @lotto; # Sortierte und formatierte Ausgabe 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 RandNum { int(rand 49) + 1 } ich hoffe du hast gesehen wie man printf benutzt :) Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher Es beginnt immer mit einer Entscheidung. |