Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zufallsgenerator mit vorgegebener Häufigkeit? (https://www.delphipraxis.net/97263-zufallsgenerator-mit-vorgegebener-haeufigkeit.html)

Nikolas 7. Aug 2007 21:30

Re: Zufallsgenerator mit vorgegebener Häufigkeit?
 
Wenn du später aber die Binäre Suche einsetzen willst, brauchst du eine andere Liste, mit p(x<=n) in den Einträgen.

negaH 7. Aug 2007 21:54

Re: Zufallsgenerator mit vorgegebener Häufigkeit?
 
Jo das stimmt. Das "Verteilung" Array enthält dann nicht die absoluten Prozentwert für jeden Bereich sondern die kummulierten Prozente, also so

1 = 10%
2 = 20%
3 = 40%
4 = 10%
5 = 20%

[10,30,70,80,100]

Das vereinfacht einiges, 1. Schleife ist nun unnötig, 2. Schleife begint in der Mitte des Arrays[] und vergleicht J mit diesem Element. Sollte es kleiner sein nimmt man die untere Hälfte des Arrays[] und ansonsten die obere Hälfte. Simple binäre Suche halt.

Gruß Hagen

stoxx 7. Aug 2007 22:43

Re: Zufallsgenerator mit vorgegebener Häufigkeit?
 
Also das mit dem Array und eine zweite Zuordnung habe ich mir auch schon überlegt, nur ist das dann noch eine echte Zufallszahl?
Wahrscheinlich reicht das aber für meinen Zweck aus.
ich denke, ich werde es einfach über ein Array lösen, und mit hilfe einer gleichverteilten Zufallsvariable einfach die neue Zahl über diese "Funktion" zuweisen ..
vielen Dank!

negaH 7. Aug 2007 22:57

Re: Zufallsgenerator mit vorgegebener Häufigkeit?
 
Naja, echter Zufall kann es nie sein, da wir ja nur Random() benutzen und das eine Pseudo-Zufalls-Funktion ist, eben kein echter Zufall.

Aber statistisch betrachtet ist es exakt so zufällig wie du die Verteilung vorgibst. Bei zwei Zahlen zb. 1 und 2 die mit einer Wahrscheinlichkeit von 10% zu 90% vorkommen sollen, wird

1.) die Reihenfolge welche der Zahlen gezogen wird statistisch exakt so gleichverteilt sein wie Random(), als benutze Zufallsfunktion
2.) die statistische Häufung der beiden Zahlen jeweils 10% zu 90% sein. Die zweite Zahl kommt also 9 mal häufiger vor als die 1. Zahl

Das verhältnis der Häufigkeiten ist also nicht im geringsten zufällig, ist ja auch so von uns gewollt. Die Reihenfolge der gezogenen Zahlen ist aber sehr wohl noch pseudozufällig. Wird statt Random() ein echter Zufallsgenerator benutzt dann ist die Reihenfolge auch zufällig.

Sieh es mal so. Wir ziehen mit einem echten Zufallsgenerator Zahlen im Berewich 1 bis 100. Wie wird die Häufigkeitsverteilung dieser 100 Zahlen nach einer gewissen Zeit sein ? Zufällig oder exakt berechnenbar ?

Natürlich beträgt die Wahrscheinlichkeit dann exakt 1/100'tel für die Häufigkeiten der gezogenen Zahlen. Bei 100 Zahlen also 1 Prozent pro Zahl. Logisch da ein Zufallsgenerator statistisch die Häufigkeiten auf den kompletten Zahlenbereich gleichmäßig verteilt. Das ist ja auch die Grundlage dafür das man mit den vorherigen Lösungsvorschlägen aus einer statistischen Gleichverteilung eine vorgegebene Ungleichverteilung erreichen kann. Wir gehen davon aus das Random() immer gleichverteilte Häufigkeiten erzeugt, skalieren unsere Vorgabehäufigkeiten entsprechend um eine ungleichverteilte Häufigkeit zu erreichen.

Also selbst mit echten Zufall wären die Häufigkeiten welche Zahlen man zieht nicht zufällig, sondern statistisch gleichverteilt wenn man gegen unendlich viele Zahlen gezogen hat.

Die statistische Verteilung der Zahlen ist also fast immer gleichverteilt, egal mit welchem Verfahren man diese Zahlen erzeugt (guter RNG vorrsausgesetzt).

In der Physik gibts aber sehr viele Phenomäne die keine Gleichverteilung der Wahrscheinlichkeiten der gezogenen Zahlen aufweisen. Zb. Gaussche Verteilung -> Glockenkurve.

Anderst ausgedrückt: Zufällig ist nicht die Häufigkeit sondern nur der Zeitpunkt wann man welche Zahl zieht. Zufall bestimmt also den Zeitpunkt wann was eintritt aber nicht wie oft es als ein Ereignis unter vielen anderen vorkommt. Die Frage nach dem "oft", also dem Vorkommen eines Ereignisses wird immer statistisch berechenbar sein. Dazu benötigt man die Periode und die Art des Zufallsgenerators. Kennt man das beides bestimmt nur noch die Größe der gezogenenen Ereignisse inwieweit wir die statistische Häufigkeit berechnen können.

Es ist sehr wichtig das zu begreifen um zu verstehen was Zufall ist.

Gruß Hagen


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:15 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz