Affects Version/s: 2.2
Fix Version/s: 3.0
The Well PRNG's implementations have arrays iRm1, iRm2, iRm3, i1, i2, i3. All these arrays are unmodifiable, so we can replace this arrays initialization block
final int w = 32;
final int r = (k + w - 1) / w;
this.v = new int[r];
this.index = 0;
// precompute indirection index tables. These tables are used for optimizing access
// they allow saving computations like "(j + r - 2) % r" with costly modulo operations
iRm1 = new int[r];
iRm2 = new int[r];
i1 = new int[r];
i2 = new int[r];
i3 = new int[r];
for (int j = 0; j < r; ++j)
with inline initialized static final arrays.
This is much better and faster implementation, freed from unnecessary costly calculations (such as %).
Another solution: leave as is, but make all these arrays static.