| |
Fortgeschrittene ProgrammierungRe: Zufallszahlen | | | Autor: VBStein | Datum: 03.12.07 19:29 |
| Hi,
darf's etwas objektorientiert sein?
Private Const MaxZNumbers As Long = 6
Private ZNumbers As Collection
Private Sub Command1_Click()
Dim i As Long, n As Long
If Not ZNumbers Is Nothing Then Set ZNumbers = Nothing
Set ZNumbers = New Collection
Randomize Timer
On Error Resume Next
Do
n = Int(Rnd * 49) + 1
ZNumbers.Add n, "K" & CStr(n)
If Err.Number = 0 Then i = i + 1
Loop While i <= MaxZNumbers
End Sub
'Show the numbers
Private Sub Command2_Click()
Dim i As Long
For i = 1 To ZNumbers.Count
MsgBox ZNumbers(i)
Next
End Sub | |
Zufallszahlen | | | Autor: Joerg12 | Datum: 20.11.07 00:37 |
| Hallo,
wieder mal eine Frage zu einem uralten Thema:
Ich verwende in meinem Programm sehr viele Zufallsschleifen. Daher achte ich schon lange darauf, daß sich die Zufallszahlen möglichst nicht immer bei jedem Prozedurdurchlauf wiederholen.
Jede Zeile, die Zufallszahlen produzieren soll, wird mit folgendem Code angesteuert:
Randomize Timer: l = Int((100 * Rnd) + 1) Leider ist der Erfolg dieses Codes aber auch sehr mäßig, weil sich bestimmte Zahlen einfach mehrfach und auffällig oft wiederholen.
Kann mir jemand einen guten Tip geben, wie ich das Ganze noch etwas besser durcheinanderwürfeln kann ?
Vielen Dank.
Gruss
Jörg. | |
Re: Zufallszahlen | | | Autor: oOJBOo | Datum: 29.11.07 21:32 |
| Hallo!
Ich habe auch mal eine Frage zum Zufallsgenerator!
Also den Zufallsgenerator hab ich hinbekommen und es klappt auch!
Jetzt habe ich nur ein Problem:
Und zwar programmiere ich eine Spielpaarung,d.h ich habe 50 Spieler -> 25 Spielpaarungen. 1.möchte ich wenn z.B 6 gegen 19 ausgelost wurde,dass dann im Feld gegenüber von 6 die Zahl 19 steht und auch im Feld gegenüber der 19 die 6!
Wie mache ich da am besten???
Dann habe ich noch eine Frage-> 2. Wie kann ich die vom Zufallsgenerator ausgewählte Zahl in irgendeiner Anweisung ansprechen wie z.B ein Feld durch UserForm.TextBox1 oder so!?
Wäre schön wenn mir jemand eine guten Tipp geben könnte!
Danke schonmal im Vorraus
Lg Julia | |
Re: Zufallszahlen | | | Autor: Timon | Datum: 01.12.07 18:32 |
| Hallo Julia,
ich weiß nicht ob ich dich richtig verstanden habe, aber zu 2.:
du speicherst die Zufallszahl ja in eine Variable wie z.B.
'Zufallsgenerator zufälliger machen ;-)
Randomize Timer
'Variable Deklarieren
Dim VarZufall as integer
'Jetzt der Variable VarZufall einen Zufallswert zwischen 1 und 100 zuweisen:
VarZufall = Int((100 * Rnd) + 1) Jetzt kannst du ja über die Variable VarZufall einfach auf die Zufallszahl zugreifen. z.B.
Text1.Text=VarZufall Die Frage 1. verstehe ich nicht ganz. Was heißt gegenüber sind das andere Textfelder oder was?
Mfg
Timon | |
Re: Zufallszahlen | | | Autor: oOJBOo | Datum: 02.12.07 18:54 |
| Ja,es stehen sich immer 2 Textfelder gegenüber!
Ich habe eine Version mit If-Anweisung getestet und das war so viel, dass eine Fehlermeldung gegekommen ist,dass es zu viel sei!
Irgendwie muss das doch auch mit einer Schleife gehen,aber ich habe keine Ahnung wie das gehen soll!?!?!?!? | |
Re: Zufallszahlen | | | Autor: mst547 | Datum: 02.12.07 21:44 |
| Hallo!
Wenn ich dich jetzt richtig verstanden habe, geht es dir darum, dass du nicht weißt, wie du das Textfeld ansprechen sollst.
Hierfür kannst du die Controls-Auflistung der UserForm verwenden, da du über diese das Textfeld mit seinem Namen als String ansprechen kannst, und diesen Namen kannst du dir "zusammenbauen".
Nehmen wir an, die Textfelder der ersten Spalte heißen "SpielerA01", SpielerA02" usw. und die der zweiten Spalte "SpielerB01", "SpielerB02" usw., dann kannst du den Teil "SpielerA" fest vorgeben und nimmst den Teil, der die Zeile angibt (01, 02 usw.) aus einer Variablen. Diese wird mittels Format-Funktion in einen zweistelligen String umgewandelt.
Hier ein Beispiel:Spieler1 = 6
Spieler2 = 19 'diese Werte werden durch den Zufallsgenerator erzeugt
UserForm1.Controls("txtSpielerA" & Format(Spieler1, "00")).Text = Spieler1
UserForm1.Controls("txtSpielerB" & Format(Spieler1, "00")).Text = Spieler2
UserForm1.Controls("txtSpielerA" & Format(Spieler2, "00")).Text = Spieler2
UserForm1.Controls("txtSpielerB" & Format(Spieler2, "00")).Test = Spieler1 Ich hoffe, ich habe mich halbwegs verständlich ausgedrückt, ist sicher am Anfang etwas kompliziert und nicht so einfach zu verstehen.
mfg mst547 | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevOutBar 4.0
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|