Thread Zufalls-LOTTO-Zahlen (9 answers)
Opened by pax77 at 2008-01-29 19:55

pax77
 2008-01-29 19:55
#105331 #105331
User since
2008-01-29
3 Artikel
BenutzerIn
[default_avatar]
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; 
}

View full thread Zufalls-LOTTO-Zahlen