Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
420to424
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
420to424
420to424
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA-Generator für Lottozahlen

VBA-Generator für Lottozahlen
Vera
Hallo Excelfreunde,
wer hat eine möglichst effektive Idee (VBA-Idee) die Variable Lotto(6) mit sechs zufällig (aber unterschiedlichen) Lottozahlen zu füllen?
Habe wohl zu viel Rindfleisch gegessen: mir fällt nichts schnelles ein.
Liebe Grüße Vera
meine bisherige umständliche Lösung
Vera

Sub LottoZufall()
Dim Lottozahl(6), Schleife, Zahl As Byte
Schleife = 1
Do
Zahl = Int((49) * Rnd + 1)
If Zahl <> Lottozahl(1) And _
Zahl <> Lottozahl(2) And _
Zahl <> Lottozahl(3) And _
Zahl <> Lottozahl(4) And _
Zahl <> Lottozahl(5) And _
Zahl <> Lottozahl(6) Then
Lottozahl(Schleife) = Zahl
Schleife = Schleife + 1
End If
Loop Until Schleife > 6
End Sub

AW: meine bisherige umständliche Lösung
30.04.2004 14:59:40
Oberschlumpf
Hi Vera
Sieht doch gut aus.
Du ermittelst 6 zufällig ausgewählte Zahlen, und mit der etwas längeren If-Bedingung :-)sorgst Du dafür, dass keine Zahl doppelt ausgewählt wird.
Da aber mein Wort nicht das Maß aller Dinge ist, gibts ja vielleicht doch noch Verbesserungsmöglichkeiten, die aber auch ich im Moment nicht erkenne :-)
Ciao, viel Spaß beim Lotto spielen & viel Glück beim Gewinnen ;-)
Thorsten
Anzeige
AW: meine bisherige umständliche Lösung
K.Rola
Hallo,
sollen die Zahlen gleich in einem Blatt ausgegeben werden oder einfach nur
als Array?
Gruß K.Rola
AW: kleiner Schönheitsfehler
OliveR
Hi Vera,
leider wird eine Zahl, wenn diese doppelt gezogen wird nicht erneut gezogen, d.h. das Feld im Array bleib für diese Ziehung leer..
Gruß
OliveR

Sub LottoZufall()
Dim Lottozahl(6), Schleife, Zahl As Byte
Schleife = 1
For Schleife = 1 To 6
Zahl = Int((49) * Rnd + 1)
If Zahl <> Lottozahl(1) And _
Zahl <> Lottozahl(2) And _
Zahl <> Lottozahl(3) And _
Zahl <> Lottozahl(4) And _
Zahl <> Lottozahl(5) And _
Zahl <> Lottozahl(6) Then
Lottozahl(Schleife) = Zahl
Else
Schleife = Schleife - 1
End If
Next
End Sub

Anzeige
AW: VBA-Generator für Lottozahlen
FP
Hallo Vera,
probier's mal damit:

Sub Lotto()
Dim Zahlen(6) As Byte
Dim Zahl      As Byte
Dim ZNr       As Byte
Dim i         As Byte
Zahlen(1) = Fix(Rnd * 49) + 1
For ZNr = 2 To 6
Zahl = Fix(Rnd * 49) + 1
For i = 1 To ZNr - 1
If Zahl = Zahlen(i) Then
Zahlen(ZNr) = 1
Exit For
End If
Next
Zahlen(ZNr) = Zahlen(ZNr) + Zahl
Next
End Sub

Servus aus dem Salzkammergut
Franz
AW: VBA-Generator für Lottozahlen
Micha
Hallo Franz,
m.E. ist dein Code für das Lottozahlenproblem nicht geeignet.
Beispiel: Sei Zahlen(1)=37, wenn jetzt als zweite Zahl wieder die 37 gezogen wird, dann wird in deiner Wenn-Abfrage Zahlen(2)=1 gesetzt und die innere Schleife wird verlassen. Anschließend wird Zahlen(2)=38 (37+1). Damit schließt du zwar doppelte Zahlen aus, aber gleichzeitig wird das Spiel unfair. Denn in diesem Beispiel ist die Wahrscheinlichkeit, dass die zweite Ziffer eine 38 wird, doppelt so hoch als, dass sie beispielsweise eine 36 wird.
Ein weiteres Problem ergibt sich, wenn die 49 doppelt gezogen wird. Dann wird aus der zweiten 49 auf einmal eine 50.
Oder habe ich deinen Code falsch verstanden?
Um auch mal produktiv zu sein, hier mal ein etwas anderer Ansatz, der meiner Meinung nach funktionieren sollte:

Sub lottozahlen()
Dim kugeln() As Byte
Dim lotto(5) As Byte
ReDim kugeln(48)
For i = 0 To 48
kugeln(i) = i + 1
Next i
For i = 0 To 5
zufall = Int((49 - i) * Rnd + 1)
lotto(i) = kugeln(zufall)
For j = zufall To 48 - 1 - i
kugeln(j) = kugeln(j + 1)
Next j
ReDim Preserve kugeln(47 - i)
Next i
End Sub

Viele Grüße und ein schönes Wochenende
Micha
Anzeige
AW: VBA-Generator für Lottozahlen
Beate
Hallo Vera,
schau mal auf der Seite von Thomas Igel an: http://www.igelnet.de/
Da gibt es eíne Freeware-Datei Lotto.zip, eine kleine Anwendung, die einem die schwere Entscheidung abnimmt, welche Zahlen man ankreuzen soll. Für das Spiel 6 aus 49 werden 6 Zahlen gezogen.
Der Code ist wie dort wie folgt:

Sub Lotto()
Application.ScreenUpdating = False
Dim Lottozahl(6)
Range("A3:G9").Select
With Selection
.Borders(xlLeft).LineStyle = xlNone
.Borders(xlRight).LineStyle = xlNone
.Borders(xlTop).LineStyle = xlNone
.Borders(xlBottom).LineStyle = xlNone
.BorderAround LineStyle:=xlNone
.Interior.ColorIndex = xlNone
End With
Range("A1").Select
For zähler% = 1 To 6
Randomize Timer
nochmal:
Lottozahl(zähler%) = Int((49) * Rnd + 1)
Cells.Find(What:=Lottozahl(zähler%)).Activate
Selection.BorderAround Weight:=xlThin, ColorIndex:=xlAutomatic
If Selection.Interior.ColorIndex = 35 Then GoTo nochmal
With Selection.Interior
.ColorIndex = 35
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
Next zähler%
End Sub

Gruß,
Beate
Anzeige
anderer ansatz
IngoG
Hallo Zusammen,
mein ansatz lautet folgendermaßen:

Sub Lotto()
Dim I As Byte
For I = 0 To 48
[iv65536].Offset(-I, 0) = Rnd
Next I
For I = 0 To 5
Cells(I + 1, [iv6].End(xlToLeft).Column + 1) = Application.WorksheetFunction.Rank([iv65536].Offset(-I, 0), [iv65488:iv65536])
Next I
[iv65488:iv65536].ClearContents
End Sub

hier werden 49 zufallszahlen gezogen und anschließend geschaut, die wievielt größte die zufallszahl 1-6 ist.
bei einer genauigkeit von 15 stellen sollte es unproblematisch sein, dass evt zweimal die selbe zufallszahl unter den 1. sechs zahlen vorkommt...
Gruß Ingo
PS eine Rückmeldung wäre nett...
Anzeige
AW: VBA-Generator für Lottozahlen
FP
Hallo Micha,
1) mein Code hätte leider tatsächlich eine Zahl 50 gezogen :-(
2) hier eine Alternative

Sub Lotto()
Dim Zahlen(6) As Byte
Dim blnZ(49)  As Boolean
Dim Zahl      As Byte
Dim ZNr       As Byte
Do
Zahl = Fix(Rnd * 49) + 1
If blnZ(Zahl) = False Then
blnZ(Zahl) = True
ZNr = ZNr + 1
Zahlen(ZNr) = Zahl
End If
Loop Until ZNr = 6
End Sub

Servus aus dem Salzkammergut
Franz
AW: VBA-Generator für Lottozahlen
Micha
Hallo Franz,
dein neuer Vorschlag gefällt mir persönlich sehr gut :-)
gruß
micha
Genial FP!!!!!!!!!!!!!
Dieter
d
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige