Subtração com transporte
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:
onde .
As constantes S e R são conhecidas como atrasos curtos e longos, respectivamente.[2] Portanto, as expressões e correspondem aos termos anteriores S e R da sequência. S e R satisfazem a condição . O módulo M tem o valor , onde W é o tamanho da palavra, em bits, da sequência de estados e .
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]
- ↑ 1,0 1,1 Predefinição:Citar periódico
- ↑ subtract_with_carry_engine Class, Microsoft Visual Studio 2015
- ↑ std::subtract_with_carry_engine, cppreference.com