vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: 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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zufallszahlen 
Autor: Dirk
Datum: 20.11.07 08:57

Ein Zufallszahlengenerator erzeugt nicht, wie vielfach angenommen, zufällige Zahlen. Er erzeugt sogenannte Pseudozufahlszahlen, die statistisch gesehen gewissen Kriterien unterliegen - zufällige Verteilung.

Es reicht, den Generator einmal zu initialisieren. Bis er die Zahlenreihenfolge wiederholt, kann es schon etwas dauern. Das ist dann der Zyklus des Generators. Das kann ich in der VB-Hilfe nicht finden. Aber ich gehe davon aus, dass der Zyklus so im Bereich von 2^30 ca. 10^9 liegt.

Aus der Hilfe:
Zitat:


Bevor Sie Rnd aufrufen, verwenden Sie die Randomize-Anweisung ohne Argument, um den Zufallszahlengenerator mit einem Startwert zu initialisieren, der auf dem Systemzeitgeber basiert


Häufiges Randomize(n) macht es nicht zufälliger.

Gruß
Dirk

--
?Get it right the first time

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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!?!?!?!?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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