Main Content

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.

Secuencias múltiples

El software de MATLAB® incluye algoritmos de generación que le permiten crear secuencias múltiples de números aleatorios independientes. El método de fábrica RandStream.create le permite crear tres secuencias que tengan el mismo algoritmo de generación y valor de semilla pero que sean estadísticamente independientes.

[s1,s2,s3]=RandStream.create('mlfg6331_64','NumStreams',3)

s1 = 

mlfg6331_64 random stream
      StreamIndex: 1
       NumStreams: 3
             Seed: 0
  NormalTransform: Ziggurat

s2 = 

mlfg6331_64 random stream
      StreamIndex: 2
       NumStreams: 3
             Seed: 0
  NormalTransform: Ziggurat

s3 = 

mlfg6331_64 random stream
      StreamIndex: 3
       NumStreams: 3
             Seed: 0
  NormalTransform: Ziggurat

Como prueba de la independencia, puede ver que estas secuencias apenas están correlacionadas.

r1=rand(s1,100000,1);
r2=rand(s2,100000,1); 
r3=rand(s3,100000,1);
corrcoef([r1,r2,r3])

ans =

    1.0000   -0.0017   -0.0010
   -0.0017    1.0000   -0.0050
   -0.0010   -0.0050    1.0000

Utilizando semillas diferentes, puede crear secuencias que devuelvan valores diferentes y actúen de manera diferente entre sí.

s1=RandStream('mt19937ar','seed',1);
s2=RandStream('mt19937ar','seed',2);
s3=RandStream('mt19937ar','seed',3);

Las semillas deben ser números enteros entre 0 y 2321. Con diferentes semillas, las secuencias suelen devolver valores que no están correlacionados.

r1=rand(s1,100000,1);
r2=rand(s2,100000,1);
r3=rand(s3,100000,1);
corrcoef([r1,r2,r3])

ans =

    1.0000    0.0030    0.0045
    0.0030    1.0000   -0.0015
    0.0045   -0.0015    1.0000

Para tipos de generadores que no admitan de forma explícita secuencias independientes, las diferentes semillas proporcionan un método con el que crear secuencias múltiples. Sin embargo, utilizar un generador específicamente diseñado para secuencias múltiples independientes es una mejor opción, ya que las propiedades estadísticas entre las secuencias se comprenden mejor.

Según la aplicación, puede resultar útil crear solo algunas de las secuencias en un conjunto de secuencias independientes. La propiedad StreamIndex devuelve el índice de una secuencia específica a partir de un conjunto de secuencias generadas de fábrica.

numLabs=256;
labIndex=4;
s1=RandStream.create('mlfg6331_64',
		'NumStreams',numLabs,'StreamIndices',labIndex)

s1=
mlfg6331_64 random stream
      StreamIndex: 4
       NumStreams: 256
             Seed: 0
         NormalTransform: Ziggurat

Las secuencias múltiples, dado que son estadísticamente independientes, se pueden utilizar para comprobar la precisión de una simulación. Por ejemplo, un conjunto de secuencias independientes se puede usar para repetir una simulación Monte Carlo varias veces en distintas sesiones de MATLAB, o en diferentes procesadores y determinar la variación en los resultados. Esto hace que las secuencias múltiples sean útiles en simulaciones paralelas a gran escala.

Nota

No todos los algoritmos de generación admiten secuencias múltiples. Consulte la tabla de algoritmos de generación en Elegir un generador de números aleatorios para obtener un resumen de las propiedades del generador.

Consulte también

Temas relacionados