Domanda

C'è un modo per generare in modo casuale una serie di numeri positivi tali che hanno desiderato media e la deviazione standard?

Ho un algoritmo per generare i numeri con una distribuzione gaussiana, ma non so come trattare con i numeri negativi in un modo conserva la media e la deviazione standard.
Sembra una distribuzione di poisson potrebbe essere una buona approssimazione, ma ci vuole solo un mezzo.

EDIT:C'è stata una certa confusione nelle risposte quindi cercherò di chiarire.

Ho una serie di numeri che mi danno una media e deviazione standard.Vorrei generare un di uguali dimensioni, set di numeri con un equivalente della media e della deviazione standard.Normalmente, vorrei utilizzare una distribuzione gaussiana per fare questo, però in questo caso ho un ulteriore vincolo che tutti i valori devono essere maggiori di zero.

L'algoritmo sto cercando non devono essere su base gaussiana (a giudicare dai commenti, finora, è probabilmente non dovrebbe essere) e non ha bisogno di essere perfetto.Non importa se il numero risultante set è leggermente diversa media/deviazione standard -- voglio solo qualcosa che di solito sarà il campo di baseball.

È stato utile?

Soluzione

Si può essere alla ricerca per la distribuzione log-normale, come David Norman suggerito, o forse esponenziale, binomiale, o qualche altra distribuzione.Se si dispone di un algoritmo per generare una distribuzione, e forse non è un bene per la generazione di numeri conforme ad un'altra distribuzione.Ma solo tu sai i tuoi numeri sono davvero distribuita.

La distribuzione normale, la variabile casuale gamma è da meno infinito a più infinito, quindi se siete alla ricerca per i numeri positivi, quindi non è Gaussiana.

Diverse distribuzioni, inoltre, hanno proprietà uniche, per esempio, con distribuzione di Poisson, le deviazioni standard è sempre uguale alla media.(Ecco perché la tua libreria di funzione non è chiedere la deviazione standard del parametro, solo la media).

Nel peggiore dei casi, potreste generare un numero reale casuale compreso tra 0 e 1 e calcolare la funzione di densità di probabilità sul tuo.(A seconda della distribuzione, questo può essere molto più facile a dirsi che a farsi).

Altri suggerimenti

Primo, non è possibile generare solo valori positivi da una distribuzione Gaussiana.

Secondo, io sono la comprensione, correttamente, che si sta tentando di generare una distribuzione casuale con media e deviazione standard?Qualsiasi distribuzione che fare?Se è così, lasciate media = m e deviazione standard = s.Io parto dal presupposto che m - s > 0.

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

I valori restituiti da questo processo sono la media m e la deviazione standard s.

Si potrebbe utilizzare un log-normale di distribuzione.

Perché non utilizzare un metodo di ricampionamento?Se si dispone di n i numeri nel tuo esempio, basta prendere n casuale trae dal campione, con la sostituzione.Set risultante avrà medio atteso e varianza circa lo stesso come il vostro campione originale, ma di solito sono leggermente diverse.

Detto questo, senza sapere perché avete bisogno di più di numeri casuali, è impossibile dire che la risposta giusta è.Ci si chiede se si sta tentando di risolvere il problema sbagliato...

Non ho potuto resistere: mi piace molto di Jason angolo, ma non era felice che la sua risposta solo copre i casi in cui m > s, così ho elaborato una soluzione generale che segue la sua idea.
Il più semplice di distribuzione con il dato m,s e termini positivi è

con probabilità p, return 0
con probabilità (1-p) return m / (1-p)
dove (1-p) = m^2 / (m^2 + s^2)

Prova:per una distribuzione di X con due risultati lowX con probabilità p e highX con probabilità (1-p),
m = E[X] = p x lowX + (1-p) x highX
s^2 = Varianza(X) = E[X^2] - E[X]^2 = p x lowX^2 + (1-p) x highX^2 - m^2

Set lowX a 0 e risolvere in highX e p.

È possibile utilizzare qualsiasi distribuzione che ha il sostegno positivo E può essere specificato da media e varianza.Per esempio,

  • un parametro distribuzioni non lavoro in generale.Per esempio chi-quadrato non funziona a meno che il tuo varianza è sempre il doppio della sua media.Allo stesso modo esponenziale non funziona, a meno che la tua varianza è uguale alla vostra quadratico medio.
  • alcuni due parametri di distribuzioni non funzionare in alcuni casi.Distribuzione binomiale non funziona, a meno che la varianza è inferiore a quello della media.Allo stesso modo il non-centrale del chi-quadrato non funziona, a meno che la tua varianza è maggiore di 2 volte la media e meno di 4 volte la media!
  • Tuttavia log-normale e gamma funzionano in tutti i casi.

Se ho capito bene vuoi generare numeri casuali da una distribuzione con il sostegno positivo.Ci sono molte scelte possibili.La più semplice è la

chi-square: http://en.wikipedia.org/wiki/Chi-square_distribution (che è solo la somma di due quadrati gaussiane)

Tutti i asimmetrico distribuzione esponenziale, weibull, pareto, Inverse Gaussian, log-normale, Gamma)

Tutte le distribuzioni dall'inclinazione famiglia (skew-normal, skew-studente,...)

Tutte le funzioni di cui sopra sono tali che ogni numero casuale disegnata da uno di essi allways essere positivo.

cosa diamine stai clown parlando?la normale ha media zero, ma questo è un caso particolare della distribuzione Gaussiana, che ha parametri di media e deviazione standard.come la media aumenta, con sd si è mantenuta costante, la probabilità di generare tutti i numeri sotto lo zero riduce a zero.si può assolutamente avere una distribuzione gaussiana con n numeri negativi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top