Main Content

Gestionar La Secuencia Global ConRandstream

Las Funciones兰德,,,,兰德,,,,兰迪y兰德珀extraen是aleatorios de una secuencia de numeros aleatorios subyacente, llamada lasecuencia global。La Secuencia全球ES UN OBJETORandstream。LaUnciónrngproporciona una forma sencilla de controlar la secuencia global. Para un control más exhaustivo, la claseRandstreamLe Persite crear una secuencia secuencia de la secuencia Global,obtener un Sidentificador para la secuencia la secuencia y Controlar lageneratacióndeNúmerosaleatorios。

UtilicerngPARA Spoteecer El GeneradordeNúmerosaleatorios en la semilla(0)yalgoritmo (Mersenne Twister) predeterminados. Guarde la configuración del generador.

rng('default')s = rng
s =带有字段的结构:类型:'Twister'种子:0状态:[625x1 UINT32]

Cree Un vector fila de 1 por 6 de valores aleatorios distribuidos de manera nimeree enerere entre endre 0 y 1。

x = rand(1,6)
x =1×60.8147 0.9058 0.1270 0.9134 0.6324 0.0975

UtiliceRandstream。getGlobalStreampara devolver un Sidentificador a la secuencia Global,es Decir,la secuencia a secuencia Global de la que兰德númerosaleatorios属。Si UtilizaRandstream。getGlobalStreampara obtener un Sidentificador para la secuencia Global,puede ver los cambios queeareizóa la secuencia secuencia global conrng

GlobalStream = randstream.getGlobalStream
globalStream = mt19937ar random stream (current global stream) Seed: 0 NormalTransform: Ziggurat

Cambie la semilla y el algoritmo del generador y cree un nuevo vector fila aleatorio. Muestre la secuencia global actual de la que兰德númerosaleatorios属。

rng(1,'Philox')Xnew = rand(1,6)
Xnew =1×60.5361 0.2319 0.7753 0.2390 0.0036 0.5262
GlobalStream = randstream.getGlobalStream
GlobalStream = Philox4x32_10随机流(当前全局流)种子:1 normalTransform:反转

连续的,restaure laconfiguración原始del generador y cree un vector aleatorio。El Resultado Concuerda con el vector fila原始queXCreóConEl Generador Predeterminado。

rng(s)xold = rand(1,6)
xold =1×60.8147 0.9058 0.1270 0.9134 0.6324 0.0975

De manera predeterminada, las funciones de generación de números aleatorios, como兰德,利用La SecuenciadeNúmerosaleatorios Global。para especificar una secuencia diferente,cree otro objeto deRandstream。PáseloComoel Primer grignto de Entrada a兰德。Por Ejemplo,Cree Un Vector 1 Por 6DeNúmerosaleatorios Usando Mersenne TwisterRápidoOrientado A Simd。

mystream = randstream('dsfmt19937'
myStream = dsfmt19937 random stream Seed: 0 NormalTransform: Ziggurat
r =兰德(myStream,1,6)
r =1×60.0306 0.2131 0.2990 0.3811 0.8635 0.1334

Cuando llama a la función兰德conmyStreamcomo el Primer grignto de Entrada,ExtralenúmerosdemyStreamy没有一个afecta a los Resultados de la Secuencia Global。

Si Desea建立者myStreamcomo una secuencia global, puede utilizar la función del objetorandstream.setglobalstream

randstream.setglobalstream(mystream)globalStream = randstream.getGlobalStream
GlobalStream = DSFMT19937随机流(当前全局流)种子:0 normalTransform:Ziggurat

En muchos casos, la funciónrngEs todo lo que necesita para Controlar la Secuencia Global,pero la claseRandstreampermite el control sobre ciertas funcionalidades avanzadas, como la elección del algoritmo utilizado para los valores aleatorios normales.

por ejemplo,cree un objetoRandstreamy especifique el algoritmo detransformaciónParapara para valores seudoaleatorios distribuluidos normormente cuando utiliza兰德。Genere Valores seudoaleatorios distribuloidos normormente con elgoritmo detransformaciónPolar,en vez del algoritmo detransformaciónZiggurat预定。

mystream = randstream('MT19937AR',,,,“正常变形”,,,,'极性'
mystream = MT19937AR随机流种子:0 normalTransform:极性

EstablezcamyStreamcomo la secuencia global. Cree 6 números aleatorios con distribución normal a partir de la secuencia global.

randstream.setglobalstream(mystream)randn(1,6)
ans =1×60.2543 -0.7733 -1.7416 0.3686 0.5965 -0.0191

咨询también

|

Temas relacionados