def extract_number():
    """
    Extract a tempered pseudorandom number based on the index-th value,
    calling generate_numbers() every 624 numbers
    """
    global index
    global MT
    if index == 0:
        generate_numbers()
    y = MT[index]
    y ^= y >> 11
    y ^= (y << 7) & 2636928640
    y ^= (y << 15) & 4022730752
    y ^= y >> 18

    index = (index + 1) % 624
    return y

    Extract a tempered pseudorandom number based on the index-th value,
    calling generate_numbers() every 624 numbers
    
recipes/Python/578056_Mersenne_twister/recipe-578056.py