Zufallszahlen erzeugen die einer Verteilung genügen |
13.05.2013, 11:47 | frustudent | Auf diesen Beitrag antworten » |
Zufallszahlen erzeugen die einer Verteilung genügen zu meinem Problem: Ich habe eine beliebige Verteilung gegeben (hier speziell: Schulz-Zimm-Verteilung). Nun möchte ich mit Matlab/C++/Irgendwas Zufallsgenerierte Zahlen erzeugen, die dieser entsprechenden Verteilung genügen. Leider weiss ich nicht, wie ich das realisieren soll. Meine ursprüngliche Idee war es zuerst, ganz viele Zufallszahlen zu erzeugen, und dann so viele "wegzuschmeissen", bis sie der Verteilung genügen. An der Umsetzung bin ich allerdings gescheitert. Ausserdem scheint dies auch sehr den Rechner auszulasten. Für Vorschläge wäre ich sehr dankbar! |
||
13.05.2013, 13:56 | DerJFK | Auf diesen Beitrag antworten » |
Du kannst dir in Matlab Zahlen gleichverteilt im Intervall [0,1] erzeugen. Jetzt berechnest du nach jeder Zahl F(x)=z, (F ist die Verteilung) und berechnest aus dieser Gleichung x. Du kannst dir also die Umkehrfunktion deiner Verteilung berechnen und setzt und erhälst so Zahlen, verteilt gemäß der gewünschten Verteilung. |
||
13.05.2013, 13:59 | Mazze | Auf diesen Beitrag antworten » |
Es gibt viele Möglichkeiten, mir bekannt sind etwa - Inversionmethode - Samplingalgorithmen (etwa Metropolissampling) - spezielle Algorithmen (wie etwa Box-Muller für Normalverteilung) Für deine Verteilung fällt mir nichts spezielles ein. Die Inversionsmethode dürfte Scheitern da die Verteilungsfunktion schwierig zu invertieren sein dürfte. Wenn die Dichtefunktion einfach auszuwerten ist, dann kann man über den Metropolisalgorithmus sicher etwas in angemessenem Zeitaufwand herausbekommen, sofern man eine Beispielverteilung nimmt, die der ursprünglichen Verteilung ähnlich ist (von der Form). edit: Das was DerJFK vorschlägt dürfte wohl die Inversionmethode sein edit2: Wenn ich mich recht erinnere kannst Du in Matlab die Gleichung auch Lösen lassen, dann fällt mit unter die inversen Berechnung weg was einen Geschwindigkeitsschub bedeuten kann. |
||
13.05.2013, 14:05 | DerJFK | Auf diesen Beitrag antworten » |
Jop, hätte das wohl noch dazu schreiben sollen. Sollte eben auch sagen, was des eigentlich macht. |
||
14.05.2013, 13:41 | frustudent | Auf diesen Beitrag antworten » |
Vielen Dank, ihr habt mir weiter geholfen. Besonders der Hinweis mit dem Sampling war besonders hilfreich, da dass Matlab von Haus aus beherrscht. |
|
Verwandte Themen
Die Beliebtesten » |
|
Die Größten » |
|
Die Neuesten » |