Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

randn

Números aleatorios distribuidos de manera normal

Descripción

X = randn devuelve un escalar aleatorio extraído de la distribución normal estándar.

ejemplo

X = randn(n) devuelve una matriz de n por n de números aleatorios distribuidos de manera normal.

ejemplo

X = randn(sz1,...,szN) devuelve un arreglo de sz1 por ... por szN de números aleatorios en el que sz1,...,szN indica el tamaño de cada dimensión. Por ejemplo, randn(3,4) devuelve una matriz de 3 por 4.

ejemplo

X = randn(sz) devuelve un arreglo de números aleatorios en el que el vector de tamaño sz define size(X). Por ejemplo, randn([3 4]) devuelve una matriz de 3 por 4.

ejemplo

X = randn(___,typename) devuelve un arreglo de números aleatorios del tipo de datos typename. La entrada typename puede ser "single" o "double". Puede utilizar cualquiera de los argumentos de entrada de las sintaxis anteriores.

ejemplo

X = randn(___,"like",p) devuelve un arreglo de números aleatorios como p, es decir, del mismo tipo de datos y complejidad (real o complejo) que p. Puede especificar typename o "like", pero no ambos.

X = randn(s,___) genera números a partir de una secuencia de números aleatorios s en lugar de a partir de la secuencia global predeterminada. Para crear una secuencia, utilice RandStream. Puede especificar s seguido de cualquiera de las combinaciones de argumentos de entrada de las sintaxis anteriores.

Ejemplos

contraer todo

Genere una matriz de 5 por 5 de números aleatorios distribuidos de manera normal.

r = randn(5)
r = 5×5

    0.5377   -1.3077   -1.3499   -0.2050    0.6715
    1.8339   -0.4336    3.0349   -0.1241   -1.2075
   -2.2588    0.3426    0.7254    1.4897    0.7172
    0.8622    3.5784   -0.0631    1.4090    1.6302
    0.3188    2.7694    0.7147    1.4172    0.4889

Genere valores a partir de una distribución normal bivariante con vector promedio y matriz de covarianzas especificados.

mu = [1 2];
sigma = [1 0.5; 0.5 2];
R = chol(sigma);
z = repmat(mu,10,1) + randn(10,2)*R
z = 10×2

    1.5377    0.4831
    2.8339    6.9318
   -1.2588    1.8302
    1.8622    2.3477
    1.3188    3.1049
   -0.3077    1.0750
    0.5664    1.6190
    1.3426    4.1420
    4.5784    5.6532
    3.7694    5.2595

Guarde el estado actual del generador de números aleatorios y cree un vector de 1 por 5 de números aleatorios.

s = rng;
r = randn(1,5)
r = 1×5

    0.5377    1.8339   -2.2588    0.8622    0.3188

Restablezca el estado del generador de números aleatorios a s y, después, cree un vector nuevo de 1 por 5 de números aleatorios. Los valores son los mismos que antes.

rng(s);
r1 = randn(1,5)
r1 = 1×5

    0.5377    1.8339   -2.2588    0.8622    0.3188

Cree un arreglo de 3 por 2 por 3 de números aleatorios.

X = randn([3,2,3])
X = 
X(:,:,1) =

    0.5377    0.8622
    1.8339    0.3188
   -2.2588   -1.3077


X(:,:,2) =

   -0.4336    2.7694
    0.3426   -1.3499
    3.5784    3.0349


X(:,:,3) =

    0.7254   -0.2050
   -0.0631   -0.1241
    0.7147    1.4897

Cree un vector de 1 por 4 de números aleatorios cuyos elementos sean de precisión simple.

r = randn(1,4,"single")
r = 1x4 single row vector

    0.5377    1.8339   -2.2588    0.8622

class(r)
ans = 
'single'

Cree una matriz de números aleatorios distribuidos de manera normal con el mismo tamaño que un arreglo existente.

A = [3 2; -2 1];
sz = size(A);
X = randn(sz)
X = 2×2

    0.5377   -2.2588
    1.8339    0.8622

Es habitual combinar las dos líneas anteriores de código en una única línea.

X = randn(size(A));

Cree una matriz de 2 por 2 de números aleatorios de precisión simple.

p = single([3 2; -2 1]);

Cree un arreglo de números aleatorios que sea del mismo tamaño y tipo de datos que p.

X = randn(size(p),"like",p)
X = 2x2 single matrix

    0.5377   -2.2588
    1.8339    0.8622

class(X)
ans = 
'single'

Genere 10 números complejos aleatorios a partir de la distribución normal compleja estándar.

a = randn(10,1,"like",1i)
a = 10×1 complex

   0.3802 + 1.2968i
  -1.5972 + 0.6096i
   0.2254 - 0.9247i
  -0.3066 + 0.2423i
   2.5303 + 1.9583i
  -0.9545 + 2.1460i
   0.5129 - 0.0446i
   0.5054 - 0.1449i
  -0.0878 + 1.0534i
   0.9963 + 1.0021i

De forma predeterminada, randn(n,"like",1i) genera números aleatorios a partir de la distribución normal compleja estándar. Las partes reales y las imaginarias son variables aleatorias independientes distribuidas de manera normal con promedio 0 y varianza 1/2. La matriz de covarianzas es de la forma [1/2 0; 0 1/2].

z = randn(50000,1,"like",1i);
cov_z = cov(real(z),imag(z),1)
cov_z = 2×2

    0.4980    0.0007
    0.0007    0.4957

Para especificar una distribución normal compleja más general, defina el promedio y la matriz de covarianzas. Por ejemplo, especifique el promedio como μ=1+2i y la matriz de covarianzas como σ=[σxxσxyσyxσyy]=[2-2-24].

mu = 1 + 2i;
sigma = [2 -2; -2 4];

Transforme los datos generados anteriormente para seguir la distribución normal compleja recién definida. Incluya el factor de sqrt(2) al escalar los datos porque la varianza para las partes reales e imaginarias en la distribución original es 1/2.

R = chol(sigma);
z_comp = [real(z) imag(z)];
z = repmat(mu,50000,1) + z_comp*sqrt(2)*R*[1; 1i];
z(1:10)
ans = 10×1 complex

   1.7604 + 3.8331i
  -2.1945 + 6.4138i
   1.4508 - 0.3002i
   0.3868 + 3.0977i
   6.0606 + 0.8560i
  -0.9090 + 8.2011i
   2.0259 + 0.8850i
   2.0108 + 0.6993i
   0.8244 + 4.2823i
   2.9927 + 2.0115i

Argumentos de entrada

contraer todo

Tamaño de la matriz cuadrada, especificado como valor entero.

  • Si n es 0, X es una matriz vacía.

  • Si n es negativo, se trata como 0.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Tamaño de cada dimensión, especificado como argumentos separados de valores enteros.

  • Si el tamaño de una dimensión cualquiera es 0, X es un arreglo vacío.

  • Si el tamaño de una dimensión cualquiera es negativo, se trata como 0.

  • Más allá de la segunda dimensión, randn ignora las dimensiones finales de tamaño 1. Por ejemplo, randn(3,1,1,1) produce un vector de 3 por 1 de números aleatorios.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Tamaño de cada dimensión, especificado como vector fila de valores enteros. Cada elemento de este vector indica el tamaño de la dimensión correspondiente:

  • Si el tamaño de una dimensión cualquiera es 0, X es un arreglo vacío.

  • Si el tamaño de una dimensión cualquiera es negativo, se trata como 0.

  • Más allá de la segunda dimensión, randn ignora las dimensiones finales de tamaño 1. Por ejemplo, randn([3 1 1 1]) produce un vector de 3 por 1 de números aleatorios.

Ejemplo: sz = [2 3 4] crea un arreglo de 2 por 3 por 4.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Tipo de datos (clase) que crear, especificada como "double", "single" o nombre de otra clase que sea compatible con randn.

Ejemplo: randn(5,"single")

Prototipo del arreglo que crear, especificado como arreglo numérico.

Ejemplo: randn(5,"like",p)

Tipos de datos: single | double
Soporte de números complejos:

Secuencia de números aleatorios, especificada como objeto RandStream.

Ejemplo: s = RandStream("dsfmt19937"); randn(s,[3 1])

Más acerca de

contraer todo

Distribuciones normales reales estándar y complejas estándar

Al generar números reales aleatorios, la función randn genera datos que siguen la distribución normal estándar:

f(x)=12πex2/2.

En este caso, x es una variable real aleatoria con media 0 y varianza 1.

Al generar números reales aleatorios, por ejemplo al utilizar el comando randn(...,"like",1i), la función randn genera datos que siguen la distribución normal compleja estándar:

f(z)=1πe|z|2.

En este caso, z es una variable compleja aleatoria cuyas partes reales e imaginarias son variables aleatorias independientes distribuidas de manera normal con promedio 0 y varianza 1/2.

Sugerencias

  • La secuencia de números que produce randn viene determinada por los ajustes internos del generador de números pseudoaleatorios uniforme que subyace a rand, randi y randn. Puede controlar ese generador de números aleatorios compartido utilizando rng.

Capacidades ampliadas

Historial de versiones

Introducido antes de R2006a

expandir todo