Gerador Congruencial Linear

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

Um gerador congruencial linear, conhecido pela sigla LCG(LCG, do inglês Linear congruential generator), é um algoritmo que produz uma sequência de números pseudo-aleatório calculados com uma função linear em trecho.

Usamos uma relação de recorrência linear da seguinte forma:


Xi=m.Xi1+p

onde m e p são dois números inteiros adequadamente escolhidos.


E as variáveis aleatórias uniformes são obtidas após o dimensionamento,

Ui=Xip


Exemplo em Python

1 milhão de sorteios usando LCG
def pseudo_uniform_good(mult=16807,mod=(2**31)-1,seed=123456789,size=1):
    """
    A reasoanbly good pseudo random generator
    """
    
    U = np.zeros(size)
    x = (seed * mult + 1) % mod
    U[0] = x / mod

    for i in range(1, size):
        x = (x * mult + 1) % mod
        U[i] = x / mod

    return U