Cómo utilizar Randn en MATLAB para generar números aleatorios dentro de ciertos límites

Por joe friedman
MATLAB es un programa técnico.
Thomas Northcut/Digital Vision/Getty Images

MATLAB es un programa técnico que puede realizar aritmética, cálculo, cálculos, álgebra lineal, figura de trazado, procesamiento de señales y cientos de otras aplicaciones. Su versatilidad proviene de sus miles de funciones preprogramadas incorporadas. Una de esas funciones es "randn". Ordénale a la función el número de filas y columnas de datos que desees y crea una matriz de valores aleatorios donde los valores caen en una distribución "normal" o en "curva de campana" alrededor de una media. No puedes dar a "randn" los límites mínimo y máximo directamente, pero lo que puedes hacer en su lugar es estirar su salida en cualquier rango que necesites.

Paso 1

Haz una matriz de valores aleatorios, normalmente distribuidos mediante la función randn. Por ejemplo, escribe en la línea de comandos de MATLAB:

A = randn(4, 5)

Presiona Enter. MATLAB crea una matriz "A" con cuatro filas y cinco columnas. Los 20 valores de la matriz se distribuirán normalmente alrededor de una media central.

Paso 2

Calcula la diferencia entre el número máximo en "A" y el número mínimo en "A" con el siguiente código:

FDiff = max(A) – min(A)

MATLAB almacena el rango de la función randn en "FDiff". Por ejemplo, si el número mínimo era de -0,1 y el máximo era de 1,9, entonces MATLAB daría a "FDiff" el valor de dos.

Paso 3

Calcula la diferencia entre los números máximos y mínimos sobre los que deseas que los números aleatorios se estiren. Por ejemplo, escribe este código y pulsa Enter:

RDiff = 30 - 10

MATLAB almacenará tu rango deseado en "RDiff." En este ejemplo, el número máximo en el rango que quieres es de 30 y el mínimo es de 10. MATLAB almacena el valor 20 en "RDiff".

Paso 4

Calcula la escala que necesitas para estirar los valores de la matriz "A" para ajustarlos en su rango. Escribe en la línea y pulsa Enter:

scale = RDiff/FDiff

Con los números anteriores de ejemplo, MATLAB divide 20 en dos y da “scale” ("escala") al valor 10.

Paso 5

Escala los valores de la matriz "A" para que se estiren tan amplio o tan estrecho como tu rango deseado con el siguiente código:

A2 = scale*A

Paso 6

Mueve la matriz "A2" hacia arriba o hacia abajo de la línea numérica hasta que su valor mínimo coincida con su valor mínimo, por ejemplo 10, con este código:

A3 = A2 + (10 – min(A2))

Este resultado final, "A3", es una matriz de números distribuidos normalmente dentro de lo que el rango establece. En este ejemplo, los números aleatorios se extienden desde 10 hasta 30.