<s> '''<STR_LIT>''' <EOL> class mtwister ( object ) : <EOL> def __init__ ( self , seed ) : <EOL> '''<STR_LIT>''' <EOL> self . MT = [ <NUM_LIT:0> ] * <NUM_LIT> <EOL> self . index = <NUM_LIT:0> <EOL> self . MT [ <NUM_LIT:0> ] = int ( seed & <NUM_LIT> ) <EOL> for i in range ( <NUM_LIT:1> , <NUM_LIT> ) : <EOL> cnst = ( self . MT [ i - <NUM_LIT:1> ] >> <NUM_LIT:30> ) <EOL> cnst1 = self . MT [ i - <NUM_LIT:1> ] ^ cnst <EOL> cnst1 = <NUM_LIT> * cnst1 <EOL> cnst1 = cnst1 + i <EOL> self . MT [ i ] = ( cnst1 & <NUM_LIT> ) <EOL> def generate_numbers ( self ) : <EOL> '''<STR_LIT>''' <EOL> for i in range ( <NUM_LIT:0> , <NUM_LIT> ) : <EOL> y = ( self . MT [ i ] & <NUM_LIT> ) + ( ( self . MT [ ( i + <NUM_LIT:1> ) % <NUM_LIT> ] ) & <NUM_LIT> ) <EOL> self . MT [ i ] = self . MT [ ( i + <NUM_LIT> ) % <NUM_LIT> ] ^ ( y >> <NUM_LIT:1> ) <EOL> if ( ( y % <NUM_LIT:2> ) != <NUM_LIT:0> ) : <EOL> self . MT [ i ] = self . MT [ i ] ^ <NUM_LIT> <EOL> def extract_number ( self ) : <EOL> '''<STR_LIT>''' <EOL> if ( self . index == <NUM_LIT:0> ) : <EOL> self . generate_numbers ( ) <EOL> y = self . MT [ self . index ] <EOL> y = y ^ ( y >> <NUM_LIT:11> ) <EOL> y = y ^ ( ( y << <NUM_LIT:7> ) & <NUM_LIT> ) <EOL> y = y ^ ( ( y << <NUM_LIT:15> ) & <NUM_LIT> ) <EOL> y = y ^ ( y >> <NUM_LIT> ) <EOL> self . index = ( self . index + <NUM_LIT:1> ) % <NUM_LIT> <EOL> return y <EOL> '''<STR_LIT>''' </s>
