Frage

Gibt es eine Möglichkeit, zufällig eine Reihe von positiven Zahlen zu generieren, so dass sie einen gewünschten Mittelwert und eine Standardabweichung haben?

Ich habe einen Algorithmus, um Zahlen mit einer Gaußschen Verteilung zu generieren, aber ich weiß nicht, wie ich mit negativen Zahlen so umgehen soll, wie der Mittelwert und die Standardabweichung bewahrt.
Es sieht so aus, als wäre eine Poisson -Verteilung eine gute Annäherung, aber es dauert nur einen Mittelwert.

EDIT: In den Antworten gab es einige Verwirrung, also werde ich versuchen, zu klären.

Ich habe eine Reihe von Zahlen, die mir einen Mittelwert und eine Standardabweichung geben. Ich möchte eine gleich große Anzahl von Zahlen mit einem äquivalenten Mittelwert und einer Standardabweichung erzeugen. Normalerweise würde ich dazu eine Gaußsche Verteilung verwenden, aber in diesem Fall habe ich eine zusätzliche Einschränkung, dass alle Werte größer als Null sein müssen.

Der Algorithmus, den ich suche, muss nicht auf Gaußschen basieren (nach den Kommentaren bisher sollte es wahrscheinlich nicht sein) und muss nicht perfekt sein. Es spielt keine Rolle, ob die resultierende Anzahl ein etwas anderes Mittelwert/Standardabweichung hat - ich möchte nur etwas, das normalerweise im Ballpark ist.

War es hilfreich?

Lösung

Möglicherweise suchen Sie nach einer logarithmischen Normalverteilung, wie David Norman vorschlug oder vielleicht exponentiell, Binomial-, oder eine andere Verteilung. Wenn Sie einen Algorithmus zur Erzeugung einer Verteilung haben, ist es wahrscheinlich nicht gut, Zahlen zu generieren, die einer anderen Verteilung entsprechen. Aber nur Sie wissen, wie Ihre Zahlen wirklich verteilt sind.

Bei der Normalverteilung ist der Bereich der Zufallsvariablen von negativer Unendlichkeit bis zu positiver Unendlichkeit. Wenn Sie also nur nach positiven Zahlen suchen, dann ist er nicht Gaußscher.

Unterschiedliche Verteilungen haben auch einzigartige Eigenschaften, beispielsweise bei Poisson -Verteilung sind die Standardabweichungen immer gleich dem Mittelwert. (Aus diesem Grund fragt Ihre Bibliotheksfunktion nicht aus dem Parameter Standardabweichung, nur dem Mittelwert).

Im schlimmsten Fall können Sie eine zufällige reelle Zahl zwischen 0 und 1 generieren und die Wahrscheinlichkeitsdichtefunktion selbst berechnen. (Abhängig von der Verteilung kann dies viel einfacher sein als getan).

Andere Tipps

Erstens können Sie nicht nur positive Werte aus einer Gaußschen Verteilung erzeugen.

Zweitens, verstehe ich richtig, dass Sie versuchen, eine zufällige Verteilung mit gegebener Mittelwert und Standardabweichung zu generieren? Wird eine Verteilung tun? Wenn ja, lassen Sie Mittelwert = m und Standardabweichung = s. Ich gehe davon aus m - s > 0.

let n = random integer modulo 2;
if n equals 0 return m - s
else return m + s

Die von diesem Prozess zurückgegebenen Werte haben Mittelwert m und Standardabweichung s.

Sie könnten a verwenden logarisch-normal Verteilung.

Warum nicht eine Resampling -Methode verwenden? Wenn Sie haben n Zahlen in Ihrem Beispiel, nehmen Sie einfach n zufällige Zeichnungen aus der Probe, mit Ersatz. Der resultierende Satz hat einen Mittelwert und die Abweichung von etwa dem ursprünglichen Beispiel erwartet, ist jedoch normalerweise etwas anders.

Das heißt, ohne zu wissen, warum Sie mehr zufällige Zahlen brauchen, ist es unmöglich zu sagen, was die richtige Antwort ist. Man fragt sich, ob Sie versuchen, das falsche Problem zu lösen ...

Ich konnte nicht widerstehen - ich mag Jasons Winkel wirklich, aber war nicht froh, dass seine Antwort nur Fälle abdeckt, in denen ich eine allgemeine Lösung nach seiner Idee herausgearbeitet habe.
Die einfachste Verteilung mit gegebener M, S und positiven Begriffen ist

mit Wahrscheinlichkeit P, zurück 0
Return m / (1-P) mit Wahrscheinlichkeit (1-P) Return M / (1-P)
wobei (1-p) = m^2 / (m^2 + s^2)

Beweis: Für eine Verteilung x mit zwei Ergebnissen niedrig mit Wahrscheinlichkeit P und hoher Wahrscheinlichkeit (1-P),
m = e [x] = px lowx + (1-p) x hochx
S^2 = Varianz (x) = e [x^2] - e [x]^2 = px lowx^2 + (1 -p) x Highx^2 - m^2

Stellen Sie LowX auf 0 ein und lösen Sie in hoher und p.

Sie können jede Verteilung verwenden, die eine positive Unterstützung hat und durch Mittelwert und Varianz angegeben werden kann. Zum Beispiel,

  • Ein-Parameter-Verteilungen funktionieren im Allgemeinen nicht. Zum Beispiel funktioniert Chi-Quadrat nur, es sei denn, Ihre Abweichung ist immer doppelt so hoch wie sein Mittelwert. Ebenso funktioniert exponentiell nur, wenn Ihre Varianz Ihrem mittleren Quadrat entspricht.
  • Einige Zwei-Parameter-Verteilungen funktionieren in einigen Fällen nicht. Die Binomialverteilung funktioniert nicht, es sei denn, die Abweichung ist geringer als Ihr Mittelwert. In ähnlicher Weise funktioniert das nicht-zentrale Chi-Quadrat nur, wenn Ihre Abweichung mehr als das 2-fache Ihres Mittelwerts und weniger als das 4-fache Ihres Mittelwerts ist!
  • Log-normal und Gamma funktionieren jedoch in allen Fällen.

Wenn ich Sie richtig verstehe, möchten Sie zufällige Zahlen aus einer Verteilung mit positiver Unterstützung generieren. Es gibt viele mögliche Entscheidungen. Das einfachste ist das

Chi-Quadrat: http://en.wikipedia.org/wiki/chi-square_distribution(Das ist nur die Summe von zwei quadratischen Gaußschen)

Die gesamte assymetrische Verteilung (Exponential, Weibull, Pareto, Inverse Gaußsche, logarithmisch-normale, Gamma)

Alle Verteilungen aus der Verschleierung (schäg-normal, schiefes Student, ...)

Alle oben genannten Funktionen sind so, dass jede zufällige Zahl, die aus einer von ihnen gezogen wurde, immer positiv ist.

Worüber sprichst du zum Teufel? Die Standardnormale hat mittlere Null, aber das ist ein Sonderfall der Gaußschen Verteilung, der Parameter Mittel und Standardabweichung hat. Wenn der Mittelwert zunimmt und SD konstant gehalten wird, nimmt die Wahrscheinlichkeit, dass Zahlen unter Null erzeugt werden, auf Null ab. Sie können absolut eine Gaußsche Verteilung ohne negative Zahlen haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top