Ajustando o gerador XORShift para retornar um número dentro de um máximo
Eu preciso gerar inteiros aleatórios dentro de um máximo. Desde ao desempenho é críticoEu decidi usar um gerador XORShift em vez da classe Random do Java.
long seed = System.nanoTime();
seed ^= (seed << 21);
seed ^= (seed >>> 35);
seed ^= (seed << 4);
Esta implementação(fonte) me dá um inteiro longo, mas o que eu realmente quero é um inteiro entre 0 e um máximo.
public int random(int max){ /*...*/}
Qual é a maneira mais eficiente de implementar esse método?