Distribuições de probabilidade de números aleatórios no Matlab

Nesta lição, vou explicar como usar distribuições de probabilidade para gerar números aleatórios.

Por que mudar as distribuições? O Matlab permite gerar números aleatórios usando várias distribuições de probabilidade (exponencial, normal, Poisson, gama). A escolha da distribuição depende do que você quer simular. Alguns fenômenos do mundo real são melhor simulados com uma distribuição do que com outra.

Vamos ver alguns exemplos práticos.

Gere um número pseudorandômico usando a função rand() ou randi()

>> rand(1)

Nestes casos, o Matlab usa a distribuição uniforme padrão, onde todos os valores são distribuídos uniformemente entre todos os valores possíveis.

Por exemplo, gere uma matriz de 100x100 com valores aleatórios entre 0 e 1 e atribua à variável x

Este comando gera dez mil valores aleatórios.

>> x=rand(100);

Agora visualize a distribuição dos valores usando um histograma com a função hist()

>> hist(x)

Os valores aleatórios que você acabou de gerar estão uniformemente distribuídos entre 0 e 1.

A distribuição de valores aleatórios

Nota. No gráfico, o eixo horizontal indica os valores aleatórios de 0 a 1, que é o intervalo de valores possíveis. O eixo vertical mede a frequência com que os valores se repetem. A frequência é aproximadamente a mesma para cada valor.

Se você usar outras distribuições de probabilidade, o resultado é bem diferente.

A distribuição exponencial

Para gerar números aleatórios usando a distribuição exponencial, você precisa usar a função exprnd()

>> exprnd(1)
ans = 0.90844

Por exemplo, digite exprnd(1,3,2) para gerar uma matriz 3x2 com valores aleatórios usando a distribuição exponencial com um valor médio de 1.

>> exprnd(1,3,2)
ans =
1.09340 0.28265
0.10781 1.72641
0.20653 0.87235

O que muda em comparação com a distribuição uniforme?

Para entender, gere uma matriz aleatória de 100x100 usando a função exprnd()

>> x=exprnd(1,100,100);

Depois, visualize os valores aleatórios que você acabou de gerar usando um histograma de frequências com a função hist()

>> hist(x)

Na distribuição exponencial, os valores aleatórios estão concentrados no início do intervalo de valores possíveis.

A distribuição exponencial

Neste caso, os valores próximos a zero ou ao valor inicial do intervalo são muito mais frequentes.

A frequência diminui exponencialmente em valores mais altos.

A distribuição normal

Para gerar números aleatórios usando a distribuição normal, use a função randn()

>> randn(1)
ans = 0.85251

Por exemplo, digite randn(2,3) para criar uma matriz aleatória 2x3

>> randn(2,3)
ans =
-0.32674 2.24641 -0.19528
-0.37856 0.13721 0.41417

Agora gere uma matriz de 100x100 de valores aleatórios usando a distribuição normal

>> x=randn(100);

Depois visualize o histograma de frequências dos valores aleatórios usando a função hist()

>> hist(x)

Na distribuição normal, os valores mais frequentes estão centrados dentro do intervalo de valores possíveis.

A distribuição normal

A frequência de valores aleatórios diminui à medida que você se afasta de zero, tanto para a direita quanto para a esquerda.

A Distribuição Normal é caracterizada por uma curva em forma de sino.

A Distribuição de Poisson

Para gerar números aleatórios com a Distribuição de Poisson, você pode usar a função poissrnd().

>> poissrnd(1)
ans = 3

A Distribuição de Poisson gera números aleatórios em torno de um valor médio.

Exemplo. Quando o parâmetro da função poissrnd(1) é definido como 1, ela gera números aleatórios de uma distribuição de Poisson com um valor médio de 1.

Por exemplo, você pode digitar poissrnd(5,2,3) para criar uma matriz aleatória 2x3 composta de valores em torno do valor médio de 5.

>> poissrnd(5,2,3)
ans =
3 7 6
5 2 2

Você também pode gerar uma matriz aleatória de 100x100 de valores em torno do valor médio de 5.

>> x=poissrnd(5,100,100)

Depois, você pode exibir o histograma de frequências usando a função hist().

>> hist(x)

Na Distribuição de Poisson, os valores aleatórios geralmente estão concentrados em torno do valor médio de 5.

Entendendo a Distribuição de Poisson

A Distribuição Gama

Para gerar números aleatórios usando a Distribuição Gama, você pode usar o comando randg().

>> randg(1)
ans = 2.5621

Por exemplo, você pode digitar randg(100,2,3) para produzir uma matriz aleatória 2x3 em torno do valor central de 100.

>> randg(100,2,3)
ans =
101.843 98.346 87.956
93.809 99.350 93.122

Você também pode gerar uma matriz aleatória 100x100 com a Distribuição Gama em torno do valor central de 5.

>> x = randg(5,100,100)

Depois, você pode exibir o histograma de frequências utilizando a função hist().

>> hist(x)

Na Distribuição Gama, valores próximos ao valor central são mais frequentes.

Entendendo a Distribuição Gama

Ao utilizar essas distribuições de probabilidade no MATLAB, você pode gerar números aleatórios com diversas características.

Essas funções podem ser usadas para gerar valores aleatórios únicos, vetores ou matrizes compostas por valores aleatórios.

 
 

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

FacebookTwitterLinkedinLinkedin

Números aleatórios em Matlab