Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Genere números aleatorios utilizando inversión de distribución uniforme

Este ejemplo muestra cómo generar números aleatorios utilizando el método de inversión de distribución uniforme. Esto es útil para las distribuciones cuando es posible calcular la función de distribución acumulativa inversa, pero no hay compatibilidad para el muestreo de la distribución directamente.

Paso 1. Genere números aleatorios a partir de la distribución uniforme estándar.

Se utiliza para generar 1000 números aleatorios de la distribución uniforme en el intervalo (0,1).rand

rng('default')  % For reproducibility u = rand(1000,1);

El método de inversión se basa en el principio de que las funciones de distribución acumulativa continuas (CDFS) oscilan uniformemente sobre el intervalo abierto (0,1). Si

<math display="block">
<mrow>
<mi>u</mi>
</mrow>
</math>
es un número aleatorio uniforme en (0, 1), entonces
<math display="block">
<mrow>
<mi>x</mi>
<mo>=</mo>
<msup>
<mrow>
<mi>F</mi>
</mrow>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msup>
<mo stretchy="false">(</mo>
<mi>u</mi>
<mo stretchy="false">)</mo>
</mrow>
</math>
genera un número aleatorio
<math display="block">
<mrow>
<mi>x</mi>
</mrow>
</math>
de cualquier distribución continua con la CDF especificada.F

Paso 2. Genere números aleatorios a partir de la distribución de Weibull.

Utilice la función de distribución acumulativa inversa para generar los números aleatorios de una distribución de Weibull con parámetros y que correspondan a las probabilidades en.A = 1B = 1u Graficar los resultados.

x = wblinv(u,1,1); histogram(x,20);

El histograma muestra que los números aleatorios generados utilizando la función de CDF inversa de Weibull tienen una distribución de Weibull.wblinv

Paso 3. Genere números aleatorios a partir de la distribución normal estándar.

Los mismos valores en pueden generar números aleatorios a partir de cualquier distribución, por ejemplo la normal estándar, siguiendo el mismo procedimiento utilizando el CDF inverso de la distribución deseada.u

figure x_norm = norminv(u,1,1); histogram(x_norm,20)

El histograma muestra que, utilizando el CDF inverso normal estándar, los números aleatorios generados a partir de ahora tienen una distribución normal estándar.norminvu

Consulte también

| | |

Temas relacionados