All pastes #1358207 Raw Edit

algorithm China

public text v1 · immutable
#1358207 ·published 2009-03-11 14:50 UTC
rendered paste body
int[0..623] MT
int index = 0
function initializeGenerator(int seed) {
MT[0] := seed
for i from 1 to 623 {
MT[i] := last 32 bits of(1812433253 * (MT[i-1] xor (right shift by 30 bits(MT[i-1]))) + i)
}
}
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))
y := y xor (left shift by 15 bits(y) and (4022730752))
y := y xor (right shift by 18 bits(y))

index := (index + 1) mod 624
return y
}
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 {
MT[i] := MT[i] xor (2567483615)
}
}
}