__author__ = 'andersonmarques'

from distributions.distribuicoes_simulacao import Distribuicao
distri = Distribuicao()
prob = distri.geometricaB(5, 0.3)
print("probabilidade: %.4f" % prob)
__author__ = 'andersonmarques'


from distributions.distribuicoes_simulacao import Distribuicao


distri = Distribuicao()

print("%.4f" % distri.binomialA(40, 0.58, 25))
__author__ = 'anderson'


from distributions.distribuicoes_simulacao import Distribuicao


distri = Distribuicao()
# m = lamb*tempo => 2/1 * 2 = 4
p012 = distri.poisson_analiticaB(4, 0, 2) #probab. x = 0, 1, 2
p = 1 - p012
print("%.4f" % p)

__author__ = 'anderson'
from distributions.distribuicoes_simulacao import Distribuicao
import random

fila =[]
amostras_tempo = []
r = random.random()
dist = Distribuicao()
tempo_servico = 5/60 #5min em horas
proximaChegada = dist.fdp_exponencial(15, random.random())
proximaSaida = proximaChegada + tempo_servico

for x in range(1000000):
    if proximaChegada < proximaSaida:
        fila.append(proximaChegada)
        proximaChegada += dist.fdp_exponencial(15, random.random())
    else:
        tempo = proximaSaida - fila.pop(0)
        amostras_tempo.append(tempo)

        if len(fila) == 0:
            proximaSaida = proximaChegada + tempo_servico
        else:
            proximaSaida += tempo_servico

print(len(amostras_tempo), len(fila))
__author__ = 'andersonmarques'

from distributions.distribuicoes_simulacao import Distribuicao

distri = Distribuicao()
prob = distri.binomialB(5, 0.6, 3)
print("probabilidade: %.4f" % prob)

__author__ = 'anderson'

from distributions.distribuicoes_simulacao import Distribuicao


distri = Distribuicao()
experimentos = 10000
cont = 0
# m = lamb*tempo => 2/1 * 2 = 4
for x in range(experimentos):
    pt = distri.poisson_por_binomial(20)
    if 18 <= pt <= 25:
        cont += 1
print("%.4f" % (cont/experimentos))
__author__ = 'andersonmarques'

from distributions.distribuicoes_simulacao import Distribuicao


distri = Distribuicao()
print("Pessoas com 9.4 representam aproximadamente %.4f por cento do total" % ((1 - distri.monte_carlo_fdp_normal(distri.fdp_normal, 6, 2.5, 0, 9.4)) * 100))
print("Portanto provavelmente essa e a nota minima para conseguir a bolsa.")
__author__ = 'anderson'
from distributions.distribuicoes_simulacao import Distribuicao

distri = Distribuicao()

r = distri.hipergeometrica(10, 3, 9, 4)
print("Probabilidade: %.4f" % (r))
__author__ = 'anderson'


from distributions.distribuicoes_simulacao import Distribuicao

distri = Distribuicao()

p = distri.poisson_analiticaB(20, 18, 25)

print("%.4f" % p)
__author__ = 'andersonmarques'

from distributions.distribuicoes_simulacao import Distribuicao

distri = Distribuicao()
r = (1 - distri.monte_carlo_fdp_normal(distri.fdp_normal, 6, 2.5, 0, 8)) * 100
x = 1000 * r / 100
print("Número estimado de pessoas com nota 8: %d" % x)

__author__ = 'anderson'

from distributions.distribuicoes_simulacao import Distribuicao


dist = Distribuicao()
resp = dist.poisson_analiticaB(3, 0, 2)
print(resp)
__author__ = 'andersonmarques'

from distributions.distribuicoes_simulacao import Distribuicao

distri = Distribuicao()
prob = distri.binomialA(3, 0.6, 2)
print("probabilidade: %.4f" % prob)
__author__ = 'anderson'

from distributions.distribuicoes_simulacao import Distribuicao

dist = Distribuicao()
resp = 0
n = 100
M = 10
for x in range(6, 10):
    resp += dist.hipergeometrica(M, x, n-M, M-x)
print(resp)
__author__ = 'andersonmarques'

from distributions.distribuicoes_simulacao import Distribuicao

distri = Distribuicao()
prob = distri.geometrica(4, 0.3)
print("probabilidade: %.4f" % prob)
__author__ = 'andersonmarques'

from distributions.distribuicoes_simulacao import Distribuicao


experimentos = 10000
cont = 0

distri = Distribuicao()
for i in range(experimentos):
    resp = distri.binomial_simulada(3, 0.6)
    if resp == 2:
        cont += 1
print("Probabilidade de obter exatamente 2 sucessos é de aproximadamente %.4f" % (cont/experimentos))
__author__ = 'anderson'
from distributions.distribuicoes_simulacao import Distribuicao

distri = Distribuicao()

r = distri.combinacao(10, 3) * distri.combinacao(9, 4)
print("Probabilidade: %.4f" % (r))

__author__ = 'anderson'

from distributions.distribuicoes_simulacao import Distribuicao


experimentos = 10000
cont = 0
distri = Distribuicao()
for x in range(experimentos):
    r = distri.binomial_simulada(40,0.58)

    if 15 <= r <= 20:
        cont += 1
print("%.4f" % (cont/experimentos))
__author__ = 'andersonmarques'

from distributions.distribuicoes_simulacao import Distribuicao

distri = Distribuicao()

print(1-distri.monte_carlo(distri.fdp_exponencial, 0, 2300, 1/2000))
__author__ = 'anderson'

from distributions.distribuicoes_simulacao import Distribuicao


dist = Distribuicao()
resp = dist.poisson_analiticaB(3/3, 0, 0)
print(resp)
__author__ = 'andersonmarques'

from distributions.distribuicoes_simulacao import Distribuicao


distri = Distribuicao()
print("%.4f" % (1 - distri.monte_carlo_fdp_normal(distri.fdp_normal, 6, 2.5, 0, 6)))
__author__ = 'andersonmarques'
import math

from distributions.distribuicoes_simulacao import Distribuicao

def funcao(x, lamb=1):
    return math.exp(-x**2)

def funca(x, lamb=1):
    return 2*x

distri = Distribuicao()
print(distri.monte_carlo(funcao, 2, 3, 1))

__author__ = "andersonmarques"

from distributions.distribuicoes_simulacao import Distribuicao

d = Distribuicao()

experimentos = 10000
cont = 0

# for x in range(experimentos):
r = d.binomialC(100, 0.55, 45, 60)
print(r)
__author__ = 'anderson'
from distributions.distribuicoes_simulacao import Distribuicao


experimentos = 10000
cont = 0
dist = Distribuicao()

for x in range(experimentos):
    r = dist.geometrica_simuladaGeral(5, 0.3)
    if r < 5:
        cont += 1

print("Probabilidade de obter sucesso antes do 5 ensaio é de aproximadamente %.4f" % (cont/experimentos))


__author__ = 'anderson'

from distributions.distribuicoes_simulacao import Distribuicao

experimentos = 10000
cont = 0

dist = Distribuicao()
for x in range(experimentos):
    resp = dist.poisson_por_binomial(3/3)
    if resp == 0:
        cont += 1

print(cont/experimentos)
__author__ = 'andersonmarques'

from distributions.distribuicoes_simulacao import Distribuicao


d = Distribuicao()
n = 100
p = 0.55
q = 1 - p

media = n*p
desvio = (n*p*q)**1/2
r = d.monte_carlo_fdp_normal(d.fdp_normal, media, desvio, 0, 60)
r2 = d.monte_carlo_fdp_normal(d.fdp_normal, media, desvio, 0, 45)
print("A probabilidade é de %.4f" % (r + r2))