Main Content

rng

Controlar el generador de números aleatorios

Descripción

ejemplo

rng(seed) especifica la semilla del generador de números aleatorios de MATLAB®. Por ejemplo, rng(1) inicia el generador Mersenne Twister con una semilla de 1.

La función rng controla la secuencia global, que determina cómo las funciones rand, randi, randn y randperm generan una secuencia de números aleatorios. Para crear una o más secuencias independientes de la secuencia global, consulte las funciones RandStream y RandStream.create.

ejemplo

rng(seed,generator) también especifica el tipo de generador de números aleatorios que se debe utilizar. Por ejemplo, rng(0,'philox') inicia el generador aleatorio Philox 4x32 con una semilla de 0.

ejemplo

s = rng devuelve la configuración del generador de números aleatorios actual en una estructura s.

Ejemplos

contraer todo

Establezca el generador de números aleatorios en la semilla (0) y el algoritmo (Mersenne Twister) predeterminados y, a continuación, guarde la configuración del generador.

rng('default')
s = rng
s = struct with fields:
     Type: 'twister'
     Seed: 0
    State: [625x1 uint32]

Cree un vector fila de 1 por 5 de valores aleatorios entre 0 y 1.

x = rand(1,5)
x = 1×5

    0.8147    0.9058    0.1270    0.9134    0.6324

Cambie la semilla y el algoritmo del generador y cree un nuevo vector fila aleatorio.

rng(1,'philox')
xnew = rand(1,5)
xnew = 1×5

    0.5361    0.2319    0.7753    0.2390    0.0036

Ahora restaure la configuración original del generador y cree un vector aleatorio. El resultado concuerda con el vector fila original que x creó con el generador predeterminado.

rng(s)
xold = rand(1,5)
xold = 1×5

    0.8147    0.9058    0.1270    0.9134    0.6324

Argumentos de entrada

contraer todo

Inicialización del generador, especificada como una de las siguientes opciones.

ValorDescripción
0Inicializa el generador con la semilla 0.
entero positivoInicializa el generador con la semilla del entero positivo especificado, como 1.
'default'Inicializa el generador Mersenne Twister con la semilla 0. Esta es la configuración predeterminada al inicio de cada sesión de MATLAB.
'shuffle'Inicializa el generador basándose en la hora actual, lo que resulta en una secuencia distinta de números aleatorios después de cada llamada a rng.
estructuraInicializa el generador basándose en la configuración incluida en una estructura con los campos Type, Seed y State.

Algoritmo de números aleatorios, especificado como una de las opciones de la tabla. Para obtener más información sobre los algoritmos de generador, consulte Crear y controlar una secuencia de números aleatorios.

ValorNombre del generadorPalabra clave del generador
'twister'Mersenne Twistermt19937ar
'simdTwister'Mersenne twister rápido orientado a SIMDdsfmt19937
'combRecursive'Combinado múltiple recursivomrg32k3a
'multFibonacci'Fibonacci retardado multiplicativomlfg6331_64
'philox'Generador Philox 4x32 con 10 rondasphilox4x32_10
'threefry'Generador Threefry 4x64 con 20 rondasthreefry4x64_20

Para los generadores heredados utilizados en las versiones 4.0 y 5.0 de MATLAB, utilice una de estas opciones.

ValorNombre del generadorPalabra clave del generador
'v4'Generador versión 4.0 de MATLAB heredadomcg16807
'v5uniform'Generador uniforme versión 5.0 de MATLAB heredadoswb2712
'v5normal'Generador normal versión 5.0 de MATLAB heredadoshr3cong

Sugerencias

  • Cuando lleve a cabo un procesamiento paralelo, no utilice rng('shuffle') para establecer la secuencia de números aleatorios en distintos workers a fin de garantizar la independencia de las secuencias, ya que establece la semilla del generador de números aleatorios basándose en la hora actual. Esto es así sobre todo cuando el comando se envía a varios workers de forma simultánea, por ejemplo, dentro de un trabajo parfor. Para secuencias independientes en los workers, utilice el comportamiento predeterminado o considere utilizar una subsecuencia única en cada worker usando RandStream.

  • Cuando lleva a cabo un procesamiento paralelo, los generadores de números aleatorios predeterminados en el cliente de MATLAB y en los workers de MATLAB son diferentes. Si necesita generar la misma secuencia aleatoria de números en el cliente y en los workers, puede utilizar rng con el mismo tipo de generador y semilla (o considere utilizar RandStream con el mismo tipo de generador, semilla y algoritmo normal de transformación). Para obtener más información, consulte Control Random Number Streams on Workers (Parallel Computing Toolbox).

  • Para utilizar rng en lugar de las funciones rand o randn con las entradas 'seed', 'state' o 'twister', consulte Sustituir sintaxis no recomendadas de rand y randn.

Capacidades ampliadas

Historial de versiones

Introducido en R2011a