Forums Neueste Beiträge
 

Zufallszahlen optimal generieren

31/10/2008 - 16:10 von Marcel Müller | Report spam
Schönen Nachmittag zusammen,

ich bin gerade auf der Suche nach möglichst "optimalen" Zufallszahlen. Nun
habe ich mich im Internet ein wenig dazu durchgelesen, aber so ein wirklich
deutliches Bild habe ich noch nicht davon. Ich habe gelesen daß man bessere
Ergebnisse bekommt, wenn man nur ein mal eine Variable als Random deklariert
und instanziert und dann mit .next Zahlen herausholt. Andere wiederum sagen
man solle jedes Mal den Zufallsgenerator von vorne anwerfen. Außerdem
kursiert der Typ als Seed-Wert den Tick-Count anzugeben, das solle bessere
Ergebnisse liefern, als wenn man keinen angibt. Andererseits hab ich etwas
in der Richtung gelesen, daß wenn man keinen Seed angibt, ohnehin der
Tick-Count verwendet wird. Was stimmt denn nun?

Momentan verfahre ich so daß ich als klassenweite Variable...

Private r As New Random(My.Computer.Clock.TickCount)

... deklariere und dann mit...

r.Next(x, y)

... neue Zahlen erzeuge.

Bei der praktischen Verwendung hatte ich nun schon ein paar Mal den
Eindruck, daß innerhalb einer Session manche Zahlen besonders hàufig
gekommen sind. Das wiederum hat mich wieder zu meinen anfànglichen
Überlegungen zurückgeführt.

Könnt ihr mir da aus dem Màrchenwald raushelfen und ein paar praktische
Tipps geben, wie ich ein Ergebnis erreiche was dem realen Zufall möglichst
nahe kommt?


Wünsche allen schon mal einen schönen Abend und ein erholsames
bevorstehendes Wochenende,

Marcel
 

Lesen sie die antworten

#1 Armin Zingler
31/10/2008 - 17:12 | Warnen spam
"Marcel Müller" schrieb
Private r As New Random(My.Computer.Clock.TickCount)



Verwende direkt Environment.Tickcount statt diesen Umweg. Clock.TickCount
ruft auch nur Environment.Tickcount auf. Tickcount und das andere Zeugs ist
nàmlich nicht Bestandteil deines Projekts, wofür der "My"-Namespace aber
eigentlich steht, oder was er suggeriert, oder wie auch immer das mit My.*
gedacht sein soll.

... deklariere und dann mit...

r.Next(x, y)

... neue Zahlen erzeuge.

Bei der praktischen Verwendung hatte ich nun schon ein paar Mal den
Eindruck, daß innerhalb einer Session manche Zahlen besonders hàufig
gekommen sind. Das wiederum hat mich wieder zu meinen anfànglichen
Überlegungen zurückgeführt.

Könnt ihr mir da aus dem Màrchenwald raushelfen und ein paar
praktische Tipps geben, wie ich ein Ergebnis erreiche was dem realen
Zufall möglichst nahe kommt?



Wie definiertst du "optimale"/"reale" Zufallszahlen oder "bessere"
Ergebnisse? Je gleichmàßiger die Hàufigkeit der einzelnen Zahlen, desto
besser? Wenn es dir nur darum geht, dann mach doch folgendes: Alle Varianten
probieren, jeweils Hàufigkeit der Zahlen merken (mindestens ein paar tausend
Durchlàufe) und Hàufigkeitsverteilung auswerten. Dann hast du eine
Enstscheidungsgrundlage.

Ich erzeuge nur ein Random-Objekt (Environment.Tickcount als Parameter) und
rufe dann wiederholt Next auf. An anderer Stelle im Programm kann es
natürlich ein anderes Random-Objekt sein.

Wünsche allen schon mal einen schönen Abend und ein erholsames
bevorstehendes Wochenende,



Danke, ebenso.


Armin

Ähnliche fragen