// Utwórz pseudolosową liczbę na podstawie indeksu, // wywołaj generateNumbers() aby utworzyć nową tablicę pomocniczą co 624 liczby function extractNumber() { if index == 0 { generateNumbers()
int y := MT[index] y := y xor (right shift by 11 bits(y)) y := y xor (left shift by 7 bits(y) and (2636928640)) // 0x9d2c5680 y := y xor (left shift by 15 bits(y) and (4022730752)) // 0xefc60000 y := y xor (right shift by 18 bits(y))
index := (index + 1) mod 624 return y
// Generuj tablicę 624 liczb function generateNumbers() { for i from 0 to 623 { int y := 32nd bit of(MT[i]) + last 31 bits of(MT[(i+1) mod 624]) MT[i] := MT[(i + 397) mod 624] xor (right shift by 1 bit(y)) if (y mod 2) == 1 { // y is odd MT[i] := MT[i] xor (2567483615) // 0x9908b0df
Przypisy
Linki zewnętrzne Praca naukowa o Mersenne Twister oraz powiązane artykuły Makoto Matsumoto Strona domowa Mersenne Twister z kodem w C, Fortranie, Javie, Lispie i innych językach SIMD-oriented Fast Mersenne Twister (SFMT)
Kategoria:Generowanie liczb losowych