Omgekeerde congruentiegenerator

Uit testwiki
Naar navigatie springen Naar zoeken springen

Een omgekeerde congruentiegenerator is een niet-lineaire toevalsgeneratoren die de modulaire multiplicatieve inverse gebruikt (indien aanwezig) om het volgende getal te genereren. Een omgekeerde congruentiegenerator is een rekenkundige bewerking die de bekende nadelen van lineaire congruentiegeneratoren door de stelling van Marsaglia vermijdt. In het bijzonder ontstaan geen hypervlakken. Als men gebruikmaakt van omgekeerde congruentiegeneratoren voor de Box-Muller-methode, wordt spiraalgedrag vermeden. In ruil daarvoor eist deze methode een hogere rekenkundige complexiteit.

Algemeen

De omgekeerde congruentiegenerator bestaat uit de volgende componenten:

  • Modulo p ( staat zoals gewoonlijk voor de verzameling van priemgetallen)
  • Factor a{0,,p1}
  • Toename b{0,,p1}
  • Startwaarde y0{0,,p1}

De standaardformule voor een omgekeerde congruentiegenerator is

yn+1ayn1+baynp2+b(modp).

Voor uitleg van de symboliek, zie modulair rekenen. Wegens p is er voor elke yn0 een unieke multiplicatieve inverse van elk element, yn1, zodat ynyn11. Alleen om yn=0 moet je je nog zorgen maken. Formeel zou het element het omgekeerde van 0 worden. Aangezien niet vertegenwoordigd is, kan deze het best overgeslagen worden door het te schrijven als 01=0.

Periodelengte

De maximale periodelengte kan niet groter zijn dan p. Dit wordt bereikt als en slechts als de polynoom x2bxa een primitieve veelterm in p is.

Hypervlak gedrag

In tegenstelling tot lineaire congruentiegeneratoren waarvan de waarden zo weinig van hypervlakken verschillen, kan men hier aantonen dat elk hypervlak in pk ten hoogste k punten van de vorm

(x1,,xk),(x2,,xk+1),

bevat, zo lang xlxl+k20. Door deze voorwaarde worden er nauwkeurig k1 punten afgescheiden. Daarbij kan k2 gekozen worden.

Inverse generatoren met samengesteld modulo

Ter vervanging van de modulo deling door het afsnijden van de meest significante bits zou het handig zijn om modulo m voor de berekening

yn+1(aynp2+b)(modm)

toe te staan die geen priemgetal, maar een macht van 2 is. Daarvoor moet y0 niet gegeven zijn, en a,b moeten zo vastgesteld worden dat alle yn oneven zijn, omdat dan het inverse element van yn eenduidig berekend kan worden. De periodelengte is hoogstens m/2. Indien aan de volgende voorwaarden is voldaan, is het precies m/2:

  • m=2e met e3
  • a1(mod4)
  • b2(mod4)

Expliciete inverse generatoren

Soms leest men de definitie als:

yn+1(an+b)1(an+b)p2(modp)

of

yn+1(a(n+y0)+b)1(a(n+y0)+b)p2(modp)

De laatste is geen generalisatie van bovenstaande formule; deze wordt onmiddellijk verkregen door vermenigvuldiging van bovenstaande formule.

Periodelengte

De maximale periode lengte is weer gelijk aan p, en zal worden bereikt, als a0.

Zie ook

lineaire congruentiegenerator

Referenties

  • Niederreiter, H., Random Number Generation and Quasi-Monte Carlo Methods, Society for Industrial and Applied Mathematics (1992).
  • Stallings, W., Cryptography and network security: principles and practice, University of Minnesota (1999).