in commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/MersenneTwister.java [205:227]
private static int mixSeedAndState(int[] state, final int[] seed) {
final int stateSize = state.length;
int i = 1;
int j = 0;
for (int k = Math.max(stateSize, seed.length); k > 0; k--) {
final long a = (state[i] & LOWER_MASK_LONG) | ((state[i] < 0) ? UPPER_MASK_LONG : 0);
final long b = (state[i - 1] & LOWER_MASK_LONG) | ((state[i - 1] < 0) ? UPPER_MASK_LONG : 0);
final long c = (a ^ ((b ^ (b >> 30)) * 1664525L)) + seed[j] + j; // Non linear.
state[i] = (int) (c & INT_MASK_LONG);
i++;
j++;
if (i >= stateSize) {
state[0] = state[stateSize - 1];
i = 1;
}
if (j >= seed.length) {
j = 0;
}
}
return i;
}