Gerar a mesma sequência de números aleatórios no Matlab

Nesta aula, vou demonstrar como gerar sequências de números aleatórios consistentes no Matlab.

Por que é importante gerar números aleatórios consistentes? A geração de números aleatórios se baseia em algoritmos que produzem listas de números pseudoaleatórios a partir de sementes, conforme distribuições estatísticas. Essa sequência varia em cada sessão, mas há situações em que é fundamental manter a mesma sequência, como durante o teste de um programa.

Para alcançar sequências consistentes, é possível armazenar o estado da sequência numa variável.

>> x=rand("state");

Com isso, você configura o estado da função rand() no início do seu script ou sessão, utilizando a variável x.

>> rand("state",x);

Este comando do Matlab assegura a repetição da mesma sequência de números aleatórios em todas as execuções.

Veja um exemplo prático:

Crie uma matriz de inteiros aleatórios.

>> randi(3,3)
ans =
1 3 1
1 2 3
1 2 3

Depois, reintroduza a geração de números aleatórios na memória usando a variável x.

>> rand("state",x);

A seguir, gere uma nova matriz aleatória 3x3.

>> randi(3,3)
ans =
1 3 1
1 2 3
1 2 3

As duas matrizes resultarão idênticas.

Assim, é possível gerar a mesma sequência de números aleatórios quantas vezes for necessário.

Observação: Para utilizar a mesma variável x em outras sessões ou em diferentes computadores, é recomendável salvar o conteúdo da variável num arquivo no seu computador e carregá-lo na memória do Matlab ao iniciar uma nova sessão.

Reiniciando a Sequência de Números Aleatórios

Para reiniciar a sequência do estado atual, utilize 0 como segundo parâmetro.

Por exemplo, digite rand("state", x) para carregar a sequência de números aleatórios previamente salva na variável x.

>> rand("state",x);

Gere uma matriz de inteiros aleatórios.

>> randi(3,3)
ans =
1 3 1
1 2 3
1 2 3

Ao digitar rand("state", 0), você reinicia a sequência.

>> rand("state",0)

Em seguida, crie uma matriz aleatória 3x3.

>> randi(3,3)
ans =
1 3 1
1 2 3
1 2 3

A matriz resultante será a mesma a cada execução.

 
 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin

Números aleatórios em Matlab