Laden...

new Random().Next() liefert 100-1000mal hintereinander dieselbe Zufallszahl

Erstellt von Axxus vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.065 Views
Thema geschlossen
A
Axxus Themenstarter:in
61 Beiträge seit 2008
vor 13 Jahren
new Random().Next() liefert 100-1000mal hintereinander dieselbe Zufallszahl

Hi@all

Ich habe in der letzten Woche ein Programm zur empirischen Lösung des Ziegenproblems geschrieben.

http://de.wikipedia.org/wiki/Ziegenproblem

Es ging hierbei darum zu zeigen, das bei einer ausreichend großen Menge an Durchläufen die Wahrscheinlihckeit ein Auto zu gewinnen 0,66 oder 66% ist (genaue Wahrscheinlihckeit ist 2/3)

Allerdings bekomme ich,wenn ich das Programm 100000 mal durchlaufen lasse hochsignifikante Abweichungen, weshalb das Programm nicht repräsentativ ist.

Ich hab mal nen bischen geguckt woran das liegt und mir ist aufgefallen, dass ich in 100-1000 durchläufen die selbe zufallszahl mit random.next() bekomme. Wahrscheinlihc liegt es daran, dass der PC die Zufallszahl mit der zeit berechnet und es in einer ms 100 Durchläufe packt.

Deshalb meine Frage: gibt es einen besseren zufallsgenerator?

lg

Alex

Zitat meines ehemaligen Mathelehrers:

Ein Experte ist nicht jemand, der alles kann oder richtig macht,
sondern der schon möglichst viele Fehler auf seinem Gebiet gemacht und aus diesen gelernt hat.

1.378 Beiträge seit 2006
vor 13 Jahren

Erzeuge das Random Objekt außerhalb deiner Schleife, sonst lieferts oft die gleichen Ergebnisse.

Lg XXX

/EDIT: Siehe dazu auch: Random.Next liefert immer dieselben Zahlen, aber nicht beim Debuggen

1.552 Beiträge seit 2010
vor 13 Jahren

Hallo Axxus,
wie erstellst du deinen Random?

for(int i = 0; i < 1000000; i++)
{
    new Random().Next();
}

oder

Random r = new Random();
for(int i = 0; i < 1000000; i++)
{
    r.Next();
}

Obriger Code ist nicht zufallsmäßig, da new Random die Zeit als Seed hernimmt,.
Siehe unter dem Punkt Hinweise: Random

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

N
335 Beiträge seit 2006
vor 13 Jahren

Hallo Axxus,

alternativ zu den Pseudo-RNGs aus dem Framework kannst du deine Simulation auch mit echten Zufallszahlen laufen lassen, die du z.B. von random.org beziehen kannst.

Dazu siehe:1.http://www.random.org/clients/http/ 1.http://www.random.org/clients/http/archive/

Normalerweise sollte aber auch die Qualität der Pseudo-RNGs ausreichen, wenn du sie denn richtig benutzt (siehe meine beiden Vorposter).

Mfg NeuroCoder

A
118 Beiträge seit 2009
vor 13 Jahren

Ansonsten wäre in deinem Fall System.Security.Cryptography.RandomNumberGenerator besser geeignet.

Mfg
Aratar

A
Axxus Themenstarter:in
61 Beiträge seit 2008
vor 13 Jahren

vielen dank
das erstellen der klasse außerhalb der schleife hat geholfen
Ich hab nicht gewusst dass das einen Untershchied macht

Danke

Alex

Zitat meines ehemaligen Mathelehrers:

Ein Experte ist nicht jemand, der alles kann oder richtig macht,
sondern der schon möglichst viele Fehler auf seinem Gebiet gemacht und aus diesen gelernt hat.

Thema geschlossen