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.

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.

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 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.

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.

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.