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.

Crear arreglos de números aleatorios

MATLAB® utiliza algoritmos para generar números seudoaleatorios y seudoindependientes. Estos números no son estrictamente aleatorios ni independientes en el sentido matemático, pero superan varias pruebas estadísticas de aleatoriedad y de independencia, y su cálculo se puede repetir con fines de prueba o de diagnóstico.

Las funciones rand, randi, randn y randperm son las funciones primarias para crear arreglos de números aleatorios. La función rng le permite controlar la semilla y el algoritmo que genera números aleatorios.

Funciones de números aleatorios

Existen cuatro funciones de números aleatorios: rand, randi, randn y randperm. La función rand devuelve números reales entre 0 y 1 que se extraen de una distribución uniforme. Por ejemplo:

r1 = rand(1000,1);
r1 es un vector columna 1000 por 1 que contiene números de punto flotante reales extraídos de una distribución uniforme. Todos los valores de r1 están en el intervalo abierto (0,1). El histograma de estos valores es casi plano, lo que indica un muestreo de números bastante uniforme.

La función randi devuelve valores enteros double extraídos de una distribución uniforme discreta. Por ejemplo:

r2 = randi(10,1000,1);
r2 es un vector columna 1000 por 1 que contiene valores enteros de una distribución uniforme discreta cuyo rango es 1, 2,...,10. El histograma de estos valores es casi plano, lo que indica un muestreo de números enteros entre 1 y 10 bastante uniforme.

La función randn devuelve arreglos de números de punto flotante reales que se extraen de una distribución normal estándar. Por ejemplo:

r3 = randn(1000,1);
r3 es un vector columna 1000 por 1 que contiene números extraídos de una distribución normal estándar. El histograma de r3 parece una distribución casi normal cuyo promedio es 0 y cuya desviación estándar es 1.

Puede usar la función randperm para crear arreglos de valores enteros aleatorios que no tengan valores repetidos. Por ejemplo:

r4 = randperm(15,5);
r4 es un arreglo 1 por 5 que contiene valores enteros seleccionados aleatoriamente en el intervalo cerrado [1,15]. A diferencia de randi, que puede devolver un arreglo que contenga valores repetidos, el arreglo que devuelve randperm no tiene valores repetidos.

Llamadas sucesivas a cualquiera de estas funciones devuelven diferentes resultados. Este comportamiento es útil para crear varios arreglos diferentes de valores aleatorios.

Generadores de números aleatorios

MATLAB ofrece varias opciones de algoritmo de generación que se resumen en la siguiente tabla.

Palabra claveGeneradorSoporte de secuencias y subsecuencias múltiplesPeriodo aproximado con plena precisión
mt19937arMersenne twister (se utiliza de forma predeterminada al iniciar MATLAB)No219937-1
dsfmt19937Mersenne twister rápido orientado a SIMD No219937-1
mcg16807Generador congruencial multiplicativoNo231-2
mlfg6331_64Generador de Fibonacci retardado multiplicativo2124 (251 secuencias de longitud 272)
mrg32k3aGenerador combinado múltiple recursivo2191 (263 secuencias de longitud 2127)
philox4x32_10Generador Philox 4x32 con 10 rondas2193 (264 secuencias de longitud 2129)
threefry4x64_20Generador Threefry 4x64 con 20 rondas2514 (2256 secuencias de longitud 2258)
shr3congGenerador de registro de desplazamientos sumado a un generador lineal congruencialNo264
swb2712Generador modificado de resta con préstamoNo21492

Utilice la función rng para establecer la semilla y el generador que utilizan las funciones rand, randi, randn y randperm. Por ejemplo, rng('shuffle','philox') establece la semilla para el generador Philox 4x32 en función de la hora actual, lo que produce una secuencia de números diferente cada vez que se le llama.

Para obtener más información, consulte Controlar la generación de números aleatorios.

Consulte también

| | | |

Temas relacionados