def initialize_generator(self, seed):
        i = 0;
        self.MT[0] = seed;
        for i in range(1, 624):
            self.MT[i] = 0xffffffff & (0x6c078965 * (self.MT[i-1] ^ (self.MT[i-1] >> 30)) % i);
            
        
#  // Extract a tempered pseudorandom number based on the index-th value,
#  // calling generate_numbers() every 624 numbers
#  function extract_number() {
#      if index == 0 {
#          generate_numbers()
#      }
#  
#      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
#  }
dataset/ETHPy150Open reschly/cryptopals/prob21.py/MT19937.initialize_generator/operator `+` -> `%`