synchronized public void setSeed ( final int [ ] array ) { if ( array . length == 0 ) throw new IllegalArgumentException ( "Array length must be greater than zero" ) ; int i , j , k ; setSeed ( 19650218 ) ; i = 1 ; j = 0 ; k = ( N > array . length ? N : array . length ) ; for ( ; k != 0 ; k -- ) { mt [ i ] = ( mt [ i ] ^ ( ( mt [ i - 1 ] ^ ( mt [ i - 1 ] >>> 30 ) ) * 1664525 ) ) + array [ j ] + j ; /* non linear */ mt [ i ] &= 0xffffffff ; /* for WORDSIZE > 32 machines */ i ++ ; j ++ ; if ( i >= N ) { mt [ 0 ] = mt [ N - 1 ] ; i = 1 ; } if ( j >= array . length ) j = 0 ; } for ( k = N - 1 ; k != 0 ; k -- ) { mt [ i ] = ( mt [ i ] ^ ( ( mt [ i - 1 ] ^ ( mt [ i - 1 ] >>> 30 ) ) * 1566083941 ) ) - i ; /* non linear */ mt [ i ] &= 0xffffffff ; /* for WORDSIZE > 32 machines */ i ++ ; if ( i >= N ) { mt [ 0 ] = mt [ N - 1 ] ; i = 1 ; } } mt [ 0 ] = 0x80000000 ; /* MSB is 1; assuring non-zero initial array */ }
Sets the seed of the MersenneTwister using an array of integers . Your array must have a non - zero length . Only the first 624 integers in the array are used ; if the array is shorter than this then integers are repeatedly used in a wrap - around fashion .