{% comment %}Custom stylesheet, it must be in the same directory as the html file {% endcomment %} {% comment %}Loading mathjax macro {% endcomment %} {% comment %}Load mathjax {% endcomment %} {% comment %}MathJax configuration {% endcomment %} {% comment %}End of mathjax configuration {% endcomment %}

Carregando os pacotes que fazem gráficos e que fazem gráficos e contas estatísticas:

In [1]:
using Plots, Statistics

Número de sorteios, não vamos mudar isto mais:

In [2]:
nsorteios = 1000;

Primeiro sorteio: 1.000 moedas serão lançadas.

In [3]:
nmoedas = 1000;
In [4]:
ncaras = zeros(Int,nsorteios)
for i in 1:nsorteios
  sorteio = rand(Bool,nmoedas)
  ncaras[i] = count(sorteio)
end

Vamos dividir o número de caras de cada sorteio pelo número total de moedas. O código abaixo divide cada elemento do vetor ncaras por nmoedas:

In [5]:
ncaras = ncaras / nmoedas;

Finalmente, vamos fazer o histograma correspondente:

In [6]:
histogram(ncaras,norm=true,label="$nmoedas",alpha=0.7)
Out[6]:
0.450 0.475 0.500 0.525 0.550 0 10 20 30 1000

Vamos repetir o mesmo procedimento, mas agora com 10.0000 moedas:

In [7]:
nmoedas = 10000
for i in 1:nsorteios
  sorteio = rand(Bool,nmoedas)
  ncaras[i] = count(sorteio)
end
ncaras = ncaras / nmoedas
histogram!(ncaras,norm=true,label="$nmoedas",alpha=0.7)
Out[7]:
0.450 0.475 0.500 0.525 0.550 0 20 40 60 80 1000 10000

Vamos repetir o mesmo procedimento, mas agora com 100.0000 moedas:

In [8]:
nmoedas = 100000
for i in 1:nsorteios
  sorteio = rand(Bool,nmoedas)
  ncaras[i] = count(sorteio)
end
ncaras = ncaras / nmoedas
histogram!(ncaras,norm=true,label="$nmoedas",alpha=0.7)
Out[8]:
0.450 0.475 0.500 0.525 0.550 0 50 100 150 200 250 1000 10000 100000

E, por fim, com 1.000.000 de moedas:

In [9]:
nmoedas = 1000000
for i in 1:nsorteios
  sorteio = rand(Bool,nmoedas)
  ncaras[i] = count(sorteio)
end
ncaras = ncaras / nmoedas
histogram!(ncaras,norm=true,label="$nmoedas",alpha=0.7)
Out[9]:
0.450 0.475 0.500 0.525 0.550 0 200 400 600 1000 10000 100000 1000000

Se, em lugar de aumentar o número de moedas em cada sorteio, aumetamos o número de sorteios, temos também a convergênciado resultado, mas em outro sentido. Vamos fazer o sorteio de 100 moedas sempre:

In [22]:
nmoedas=100;

E, neste caso, vamos variar o número de sorteios. Começando por 100:

In [23]:
nsorteios=100;

Cada sorteio consiste em gerar nmoedas valores aleatórios de Verdadeiro ou Falso, e o número de caras, isto é, o número de Verdadeiros, é salvo no vetor ncaras para cada sorteio:

In [24]:
ncaras = zeros(Int,nsorteios)
for i in 1:nsorteios
  sorteio = rand(Bool,nmoedas)
  ncaras[i] = count(sorteio)
end

Por fim, fazemos o histograma:

In [25]:
histogram(ncaras,norm=true,label="$nsorteios",alpha=0.7)
Out[25]:
35 40 45 50 55 60 65 0.00 0.02 0.04 0.06 100

Agora, vamos fazer a mesma coisa, mas com 1.000 sorteios:

In [26]:
nsorteios=1000;
ncaras = zeros(Int,nsorteios)
for i in 1:nsorteios
  sorteio = rand(Bool,nmoedas)
  ncaras[i] = count(sorteio)
end
histogram!(ncaras,norm=true,label="$nsorteios",alpha=0.7)
Out[26]:
35 40 45 50 55 60 65 0.00 0.02 0.04 0.06 0.08 100 1000

E, por fim, coim 10.000 sorteios:

In [27]:
nsorteios=10000;
ncaras = zeros(Int,nsorteios)
for i in 1:nsorteios
  sorteio = rand(Bool,nmoedas)
  ncaras[i] = count(sorteio)
end
histogram!(ncaras,norm=true,label="$nsorteios",alpha=0.7)
Out[27]:
30 40 50 60 70 0.00 0.02 0.04 0.06 0.08 100 1000 10000

Note que a distribuição converge. Ou seja, o resultado que estamos obtendo é uma característica do sorteio de 100 moedas. Em particular, podemos calcular a media e o desvio padrão desta distribuição:

In [28]:
mean(ncaras)
Out[28]:
50.0041
In [29]:
std(ncaras)
Out[29]:
4.97191665110333

Estas propriedades são intrínsecas deste sorteio de 100 moedas, e convergem para valores precisos se o número de sorteios é muito grande.

In [ ]: