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

lichtkind
 2008-01-29 21:03
#105335 #105335
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
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 :)
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.

View full thread Zufalls-LOTTO-Zahlen