O programa desenvolvido tem por finalidade a geração de números aleatórios, através da possibilidade de utilização de dois algoritmos amplamente conhecidos: Algoritmo de Geração Linear Congruente e Método dos Quadrados Médios.\
Os algoritmos utilizados são, na verdade, pseudo-randômicos, já que são definidos através de uma lei matemática que gera novos novos números iterativamente. Se, portanto, forem conhecidos a lei matemática de formação e os parâmetros intrínsecos a cada algoritmo, é possível determinar quais serão os próximos números gerados. Um maior grau de aleatoriedade seria possível se os números gerados também dependessem de alguma variável física, como temperatura ou campo magnético medidos em um certo ambiente.\
O fluxo de execução do programa inicia-se na especificação de qual algoritmo deseja-se utilizar (Geração Linear Congruente ou Método dos Quadrados Médios). Após isso deve-se discriminar o valor da semente utilizada para os cálculos e os parâmetros condizentes a cada algoritmo. Feito isso, um número aleatório é gerado iterativamente.\
A seguir está uma descrição de cada um dos algoritmos utilizados no programa.
O algoritmo de geração linear congruente é um dos métodos mais antigos e conhecidos de geração de números aleatórios. A teoria embasadora do seu funcionamento é de fácil entendimento, sendo sua implementação simples e de execução rápida.\
Basicamente, o gerador de números aleatórios é modelado pela relação:
-
$(X_n)$ : sequência de números aleatórios, sendo o termo$X_0$ chamado de seed (semente); -
m: módulo;
-
a: multiplicador;
-
c: incremento
As variáveis citadas acima seguem as seguintes restrições:
O período da sequência de geração dos números é no máximo m, podendo ser otimizado através do Teorema de Hull-Dobell:\
Como curiosidade, na implementação do ANSI C, foi estipulado um
algoritmo de geração linear congruente de números aleatórios com os
parâmetros
Esse método foi proposto por John Von Neumann e exposto em uma conferência em 1949. Apesar de sua popularidade, não é considerado um dos métodos mais confiáveis atualmente na geração de números aleatórios, pois seu período da sequência de geração é usualmente curto e os valores tendem a convergir para zero. No entanto, por ser de fácil implementação e rápida execução, se mostra um bom algoritmo para fins práticos.\
O método consiste basicamente na escolha de uma semente (
Como exemplo, se a semente é 25 (k = 2), o valor de
Pode-se provar que o período não ultrapassa