Autor
|
Thema: Zufallszahlen (1570 mal gelesen)
|
daniel.t Mitglied
Beiträge: 5 Registriert: 24.11.2009
|
erstellt am: 18. Jan. 2010 14:33 <-- editieren / zitieren --> Unities abgeben:
Hallo liebe Gemeinde ich habe folgendes Problem: ich möchte nach einem vorgegebenem prozentualem Verhätlnis einen Zustand zufällig festlegen, aber ich finde keinen korrekten Ansatz dafür :/ Beispiel: 40% und 60% -> zufällig soll nun mit 40% eine "0" gewürfelt werden und mit 60% eine "1" Ich habe es schon mit einer Binomialverteilung versucht, aber diese liefert mir nicht das gewünschte Ergebnis :/ Könnt ihr mir helfen?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Homer Simpson Mitglied
Beiträge: 345 Registriert: 14.09.2005
|
erstellt am: 19. Jan. 2010 08:53 <-- editieren / zitieren --> Unities abgeben: Nur für daniel.t
|
planty Mitglied Dipl.-Ing.
Beiträge: 139 Registriert: 18.09.2006
|
erstellt am: 19. Jan. 2010 11:16 <-- editieren / zitieren --> Unities abgeben: Nur für daniel.t
*hier stand etwas falsches und wurde gelöscht weil ich nicht weiss, wie ich durchstreichen kann ^^* Eine Gleichverteilung erreichst Du mit:
Code:
zEq := z_uniform(stream,0,1)
und wenn ich mir das nochmal ansehe.... müsste es z < 0.6 sein, denn > sind ja nur 40%. :-) Gruß P. ------------------ Two hours of trial and error can save ten minutes of manual reading! [Diese Nachricht wurde von planty am 19. Jan. 2010 editiert.] [Diese Nachricht wurde von planty am 19. Jan. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Homer Simpson Mitglied
Beiträge: 345 Registriert: 14.09.2005
|
erstellt am: 19. Jan. 2010 15:23 <-- editieren / zitieren --> Unities abgeben: Nur für daniel.t
z ist keine Variable, sondern die Kurzschreibweise für den Funktionsaufruf z_uniform(1, 0, 1). z := z_uniform(stream,0,1) lässt sich daher natürlich auch nicht übersetzen. Richtig ist, dass es z < 0.6 heißen muss. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
planty Mitglied Dipl.-Ing.
Beiträge: 139 Registriert: 18.09.2006
|
erstellt am: 19. Jan. 2010 16:56 <-- editieren / zitieren --> Unities abgeben: Nur für daniel.t
Zitat:
z ist keine Variable, sondern die Kurzschreibweise für den Funktionsaufruf z_uniform(1, 0, 1).
ups... sry, das hab ich nicht auf dem Plan gehabt. EDIT: Ist so auch nicht ganz richtig. Die Funktion z benutzt die Zufallszahlenfunktion des Betriebssystems (was auch immer das bedeutet). Bei mir (Vista 32) kommt die Zahl aus der rand funktion in MSVCR90.dll (also auch gleichverteilt, aber nicht mit dem Zufallszahlenstrom 1). Wo z_uniform herkommt will ich jetzt nicht prüfen, ist aber eine andere Funktion. Zitat:
z := z_uniform(stream,0,1) lässt sich daher natürlich auch nicht übersetzen.
Ich wollte z als Variable haben, hab es im oberen Post geändert. Gruß P. ------------------ Two hours of trial and error can save ten minutes of manual reading! [Diese Nachricht wurde von planty am 19. Jan. 2010 editiert.] [Diese Nachricht wurde von planty am 19. Jan. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Homer Simpson Mitglied
Beiträge: 345 Registriert: 14.09.2005
|
erstellt am: 20. Jan. 2010 09:14 <-- editieren / zitieren --> Unities abgeben: Nur für daniel.t
Zitat: Die Funktion z benutzt die Zufallszahlenfunktion des Betriebssystems
Hoppla. Das war mir gar nicht bewusst. Irgendjemand hat mir mal gesagt, dass man z nicht verwenden sollte. Jetzt weiß ich auch warum. Da es keinen Zufallszahlenstrom dafür gibt, kann man keine Seedwerte verändern. Somit kann man keine Experimente mit unterschiedlichen Zufallszahlen machen. Außerdem könnten sind die gewürfelten Ergebnisse von Version zu Version verändern, wenn Microsoft sich dazu entschließt die Zufallszahlerzeugung zu ändern. z_uniform und die anderen Verteilungen haben dieses Problem nicht, da diese Zufallszahlen von Plant Simulation berechnet werden (mittels MLCG, siehe Online-Hilfe). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |