vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Verschiedenes / Sonstiges   |   VB-Versionen: VB4, VB5, VB629.05.01
Lottozahlen 6 aus 49

Generieren von Zufallszahlen im Bereich 1-49 unter Berücksichtigung bereits ermittelter Zahlen.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  61.596 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Aus gegebenem Anlass (wir hatten diesbezüglich eine an uns gerichtete Anfrage) möchten wir Ihnen heute einen Routine zum Generieren von Lotozahlen 6 aus 49 vorstellen. Beim Erzeugen der Zufallszahlen muss sich die Zahl immer zwischen 1 und 49 befindet. Außerdem darf eine bereits ermittelte Zahl nicht doppelt "gezogen" werden.

Damit keine Zahlen doppelt vorkommen, wird jede ermittelte "Lottozahl" in einem Array-Datenfeld gespeichert. Beim Ermitteln der nächsten "Lottozahl" wird dann zunächst das Datenfeld nach der gezogenen Zahl durchsucht. Befindet sich die Zahl bereits im Datenfeld, wird eine neue Zufallszahl generiert.

' Array für die gezogenen Lottozahlen
Dim Lottozahl(6) As Integer

Lotto 6 aus 49

' Sicherstellen, daß bei jedem Start wirklich
' eine neue Zufallszahl generiert wird
Randomize -Timer
 
' Insgesamt 6 Zufallszahlen ermitteln
Dim Ziehung As Integer
Dim i As Integer
Dim Result As Boolean
Dim Zahl As Integer
 
Ziehung = 0
While Ziehung < 6
  Ziehung = Ziehung + 1
  Do
    ' Zufallszahl 1..49
    Zahl = Int(49 * Rnd + 1)
 
    ' Prüfen, ob Zufallszahl bereits "gezogen"
    Result = True
    For i = 1 To Ziehung - 1
      If Lottozahl(i) = Zahl Then
        Result = False: Exit For
      End If
    Next i
  Loop Until Result = True
 
  Lottozahl(Ziehung) = Zahl
Wend
 
' Lottozahlen anzeigen
Dim Msg As String
 
Msg = "Die Lottozahlen lauten: "
For i = 1 To 6
  Msg = Msg & Format$(Lottozahl(i)) & "  "
Next i
MsgBox Msg

Erläuterungen zur Do...Loop-Schleife
Innerhalb der Do...Loop-Schleife wird zunächst eine Zufallszahl im Bereich 1 bis 49 ermittelt. Danach wird mittels einer For...Next-Schleife geprüft, ob diese Zahl bereits in einem früheren Durchlauf ermittelt wurde. Die For...Next-Schleife hat immer Ziehung - 1 Durchläufe, d.h. bei der ersten Ziehung (es sind ja noch keine Zahlen zuvor gezogen worden) erfolgen 0 Schleifen-Durchläufe, was ja durchaus logisch ist. Die ermittelte Zahl wird dann im Array-Feld Lottozahl(1) gespeichert. Im nächste Durchlauf hat die Variable Ziehung den Wert 2. Innerhalb der Do...Loop-Schleife wird wiederum eine Zufallszahl generiert. Dann erfolgen 2-1 (also 1) Durchläufe, um zu prüfen, ob die Zahl bereits zuvor ermittelt wurde. Ist dies der Fall wird die Variable Result auf False gesetzt, so daß die Do...Loop-Schleife erneut durchlaufen wird. Ist die Zahl noch nicht vorhanden, wird sie im Datenfeld Lottozahl(2) gespeichert. Und ganau nach diesem Schema geht es weiter, bis eben 6 unterschiedliche Zahlen aus dem Wertebereich 1 bis 49 ermittelt werden konnten.

Erläuterungen zur Rnd-Funktion
Das Ermitteln einer Zufallszahl erfolgt in Visual-Basic mit Hilfe der Rnd-Funktion. Die Rnd-Funktion gibt hierbei eine Zahl im Berich 0 und <1 zurück. Um nun eine Ganzzahl in einem vorgegebenen Wertebereich zufällig zu ermitteln, geht man folgendermaßen vor:

Zahl = Int((Obergrenze - Untergrenze + 1) * Rnd + 1)

Obergrenze steht für die höchste Zahl und Untergrenze für die niedrigste Zahl. Das bedeutet also für das Würfel-Experiment:

Zahl = Int((6 - 1 + 1) * Rnd + 1)

was ja gleichbedeutend ist mit:

Zahl = Int(6 * Rnd + 1)

Zu beachten ist noch, daß Rnd immer die selben Zufallszahlen generiert. Um dies zu verhindern, dient der Ausdruck:

Randomize -Timer

Dieser Tipp wurde bereits 61.596 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel