#!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; }