Pregunta

Es allí cualquier manera de generar de forma aleatoria un conjunto de números positivos tal que ellos han deseado la media y la desviación estándar?

Tengo un algoritmo para generar números con una distribución de gauss, pero no sé cómo lidiar con números negativos en una forma en que la preserva la media y la desviación estándar.
Se parece a una distribución de poisson puede ser una buena aproximación, pero se tarda sólo un medio.

EDITAR:Ha habido cierta confusión en las respuestas así que voy a tratar de aclarar.

Tengo un conjunto de números que me dan una media y una desviación estándar.Me gustaría generar un igual tamaño conjunto de números con un equivalente a la media y la desviación estándar.Normalmente, yo uso una distribución de gauss para ello, sin embargo, en este caso tengo una restricción adicional de que todos los valores deben ser mayores que cero.

El algoritmo estoy buscando no necesita ser de gauss-basado (a juzgar por los comentarios hasta ahora, probablemente no debería ser) y no necesita ser perfecto.No importa si el número resultante tiene un poco diferente de media/desviación estándar -- yo sólo quiero algo que normalmente será en el estadio de béisbol.

¿Fue útil?

Solución

Usted puede estar buscando para su distribución logarítmica normal, como se sugiere David Norman, o tal vez exponencial , binomio , o algún otro tipo de distribución. Si usted tiene un algoritmo para generar una distribución, es probable que no es bueno para la generación de números conformes con otra distribución. Pero sólo usted sabe cómo sus números están muy distribuidos.

Con la distribución normal, el rango de la variable aleatoria es de menos infinito a más infinito, por lo que si usted está buscando para los números positivos solamente, entonces no es gaussiana.

Las diferentes distribuciones también tienen propiedades únicas, por ejemplo, la distribución de Poisson, las desviaciones estándar es siempre igual a la media. (Es por eso que su función de biblioteca no le pide a partir del parámetro de desviación estándar, sólo la media).

En el peor de los casos, se puede generar un número real aleatorio entre 0 y 1 y calcular la función de densidad de probabilidad por su cuenta. (Dependiendo de la distribución, esto puede ser mucho más fácil decirlo que hacerlo).

Otros consejos

En primer lugar, no se puede generar sólo valores positivos de una distribución de Gauss.

En segundo lugar, ¿Estoy entendiendo correctamente que usted está tratando de generar una distribución aleatoria con dado media y la desviación estándar? Hará cualquier distribución? Si es así, media = m y la desviación estándar = s. Estoy asumiendo que m - s > 0.

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

Los valores devueltos por este proceso tendrán m media y la desviación estándar s.

Se puede usar un log-normal distribución .

¿Por qué no utilizar un método de remuestreo? Si usted tiene n números en su muestra, acaba de tomar n al azar sorteos de la muestra, con el reemplazo . El conjunto resultante se habrá de esperar media y la varianza de la misma como su muestra original, pero por lo general será ligeramente diferente.

Una vez dicho esto, sin saber por qué necesita más números aleatorios, es imposible decir cuál es la respuesta correcta. Uno se pregunta si está tratando de resolver el problema equivocado ...

No pude resistir - me gusta Jason ángulo, pero no estaba feliz de que su respuesta sólo cubre aquellos casos donde m > s, así que trabajé en una solución general después de su idea.
El más simple de distribución con m,s y términos positivos es

con probabilidad p, devuelve 0
con probabilidad (1-p), retorno m / (1-p)
donde (1-p) = m^2 / (m^2 + s^2)

Prueba:para una distribución de X con dos resultados lowX con probabilidad p y highX con probabilidad (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

Conjunto de lowX a 0 y resolver en highX y p.

Se puede usar cualquier distribución que tiene un apoyo positivo y puede ser especificada por la media y la varianza. Por ejemplo,

    distribuciones
  • uniparamétrica no funcionarán en general. Por ejemplo chi-cuadrado no funcionará a menos que su varianza es siempre el doble de su media. Del mismo modo exponencial no funcionará a menos que su varianza es igual a su cuadrado medio.
  • algunas distribuciones de dos parámetros no funcionará en algunos casos. distribución binomial no funcionará a menos que la varianza es inferior a su media. Del mismo modo que el chi-cuadrado no central no funcionará a menos que su varianza es mayor de 2 veces su media y menos de 4 veces su media!
  • Sin embargo log-normal y gamma funcionará en todos los casos.

Si he entendido bien que desea para generar números aleatorios de una distribución con un apoyo positivo. Hay muchas opciones posibles. El más simple es el

chi-cuadrado: http://en.wikipedia.org/wiki/Chi-square_distribution (Que es la suma de dos cuadrados gaussianas)

Toda la distribución asimétrica (exponencial, Weibull, Pareto, Inverse Gaussian, log-normal, Gamma)

Todas las distribuciones de la Familly inclinación (inclinación normal, hemi-estudiante, ...)

Todas las funciones anteriores son tales que cualquier número aleatorio extraído de cualquiera de ellos será Allways ser positivo.

¿qué diablos estás hablando de payasos? la normal estándar tiene media cero, pero eso es un caso especial de la distribución de Gauss, que tiene parámetros de media y desviación estándar. como los aumentos medios, con sd mantiene constante, la probabilidad de generar cualquier número por debajo de cero disminuye a cero. pesar de todo puede tener una distribución de Gauss sin números negativos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top