Gerador Aleatório para Distribuição Exponencial

De Augusto Baffa Wiki
Ir para navegação Ir para pesquisar
Outros idiomas:
English • ‎português do Brasil

É a distribuição de probabilidade contínua do tempo entre eventos em um processo de ponto de Poisson, ou seja, um processo no qual os eventos ocorrem de forma contínua e independente a uma taxa média constante.

Para gerar uma distribuição exponencial a partir de uma distribuição uniforme, podemos usar uma técnica poderosa chamada “Método da Transformação Inversa”. Não precisamos nos deter nos detalhes teóricos aqui, mas, em última análise, este método liga os dois tipos de distribuições por meio de uma transformação matemática simples.

[math]Exp(i; \lambda) = -\frac{1}{\lambda}.ln(1 - U_i)[/math]

Exemplo em Python

Exemplo com 1 milhão de sorteios
def pseudo_exp(lamb, size=1):
    """
    Generates exponential distribution from uniform generator
    """
    # Sets seed based on the decimal portion of the current system clock
    t = time.perf_counter()
    seed = int(10**9*float(str(t-int(t))[0:]))
    
    U = pseudo_uniform(seed=seed, size=size)
    X = -(1/lamb)*(np.log(1-U))
    
    return X