Distribuciones de probabilidad de números aleatorios en Matlab
En esta lección, voy a explicar cómo usar distribuciones de probabilidad para generar números aleatorios.
¿Por qué cambiar las distribuciones? Matlab te permite generar números aleatorios utilizando varias distribuciones de probabilidad (exponencial, normal, Poisson, gamma). La elección de la distribución depende de lo que quieras simular. Algunos fenómenos del mundo real se simulan mejor con una distribución que con otra.
Vamos a ver algunos ejemplos prácticos.
Genera un número pseudoaleatorio usando la función rand() o randi()
>> rand(1)
En estos casos, Matlab utiliza la distribución uniforme predeterminada, donde todos los valores están distribuidos uniformemente entre todos los valores posibles.
Por ejemplo, genera una matriz de 100x100 con valores aleatorios entre 0 y 1 y asígnala a la variable x
Este comando genera diez mil valores aleatorios.
>> x=rand(100);
Ahora visualiza la distribución de valores usando un histograma con la función hist()
>> hist(x)
Los valores aleatorios que acabas de generar están distribuidos uniformemente entre 0 y 1.

Nota. En el gráfico, el eje horizontal indica los valores aleatorios de 0 a 1, que es el rango de valores posibles. El eje vertical mide la frecuencia con la que se repiten los valores. La frecuencia es aproximadamente la misma para cada valor.
Si usas otras distribuciones de probabilidad, el resultado es muy diferente.
La distribución exponencial
Para generar números aleatorios utilizando la distribución exponencial, necesitas usar la función exprnd()
>> exprnd(1)
ans = 0.90844
Por ejemplo, escribe exprnd(1,3,2) para generar una matriz 3x2 con valores aleatorios usando la distribución exponencial con un valor medio de 1.
>> exprnd(1,3,2)
ans =
1.09340 0.28265
0.10781 1.72641
0.20653 0.87235
¿Qué cambia en comparación con la distribución uniforme?
Para entenderlo, genera una matriz aleatoria de 100x100 usando la función exprnd()
>> x=exprnd(1,100,100);
Luego visualiza los valores aleatorios que acabas de generar usando un histograma de frecuencias con la función hist()
>> hist(x)
En la distribución exponencial, los valores aleatorios están concentrados al principio del rango de valores posibles.

En este caso, los valores cercanos a cero o al valor inicial del rango son mucho más frecuentes.
La frecuencia disminuye exponencialmente en valores más altos.
La distribución normal
Para generar números aleatorios usando la distribución normal, utiliza la función randn()
>> randn(1)
ans = 0.85251
Por ejemplo, escribe randn(2,3) para crear una matriz aleatoria 2x3
>> randn(2,3)
ans =
-0.32674 2.24641 -0.19528
-0.37856 0.13721 0.41417
Ahora genera una matriz de 100x100 de valores aleatorios usando la distribución normal
>> x=randn(100);
Luego visualiza el histograma de frecuencias de los valores aleatorios usando la función hist()
>> hist(x)
En la distribución normal, los valores más frecuentes están centrados dentro del rango de valores posibles.

La frecuencia de los valores aleatorios disminuye a medida que te alejas de cero, tanto hacia la derecha como hacia la izquierda.
La Distribución Normal se caracteriza por una curva en forma de campana.
La Distribución de Poisson
Para generar números aleatorios con la Distribución de Poisson, puedes usar la función poissrnd().
>> poissrnd(1)
ans = 3
La Distribución de Poisson genera números aleatorios alrededor de un valor medio.
Ejemplo. Cuando el parámetro de la función poissrnd(1) se establece en 1, genera números aleatorios de una distribución de Poisson con un valor medio de 1.
Por ejemplo, puedes escribir poissrnd(5,2,3) para crear una matriz aleatoria 2x3 compuesta de valores alrededor del valor medio de 5.
>> poissrnd(5,2,3)
ans =
3 7 6
5 2 2
También puedes generar una matriz aleatoria de 100x100 de valores alrededor del valor medio de 5.
>> x=poissrnd(5,100,100)
Luego, puedes mostrar el histograma de frecuencias usando la función hist().
>> hist(x)
En la Distribución de Poisson, los valores aleatorios típicamente se concentran alrededor del valor medio de 5.

La Distribución Gamma
Para generar números aleatorios utilizando la Distribución Gamma, puedes usar el comando randg().
>> randg(1)
ans = 2.5621
Por ejemplo, puedes escribir randg(100,2,3) para producir una matriz aleatoria de 2x3 alrededor del valor central de 100.
>> randg(100,2,3)
ans =
101.843 98.346 87.956
93.809 99.350 93.122
También puedes generar una matriz aleatoria de 100x100 con la Distribución Gamma alrededor del valor central de 5.
>> x = randg(5,100,100)
Luego, puedes mostrar el histograma de frecuencias utilizando la función hist().
>> hist(x)
En la Distribución Gamma, los valores cercanos al valor central son más frecuentes.

Al usar estas distribuciones de probabilidad en MATLAB, puedes generar números aleatorios con diversas características.
Estas funciones se pueden utilizar para generar valores aleatorios únicos, vectores o matrices compuestas de valores aleatorios.