Subtração com transporte

Fonte: testwiki
Saltar para a navegação Saltar para a pesquisa

O algoritmo Subtração com transporte é um gerador de números pseudoaleatórios, fazendo parte de um conjunto de algoritmos projetados para produzir uma longa série de números aparentemente aleatórios com base em uma pequena quantidade de dados iniciais. É do tipo Fibonacci defasado introduzido por George Marsaglia e Arif Zaman em 1991.[1] "Fibonacci defasado" refere-se ao fato de que cada número aleatório é uma função de dois dos números precedentes em alguns deslocamentos fixos especificados, ou "atrasos".

Algoritmo

A sequência gerada pelo mecanismo de subtração com transporte pode ser descrita pela recorrência:

x(i)=(x(iS)x(iR)cy(i1)) mod M

onde cy(i)={1,se x(iS)x(iR)cy(i1)<00,em outros casos .

As constantes S e R são conhecidas como atrasos curtos e longos, respectivamente.[2] Portanto, as expressões x(iS) e x(iR) correspondem aos termos anteriores S e R da sequência. S e R satisfazem a condição 0<S<R . O módulo M tem o valor M=2W, onde W é o tamanho da palavra, em bits, da sequência de estados e W>0 .

O mecanismo de subtração com transporte é um dos geradores da família que inclui também mecanismos de adição com transporte e subtração com empréstimo.[1]

É um dos três mecanismos geradores de números aleatórios incluídos na biblioteca padrão C++11.[3]

Predefinição:Referências