per sfizio fai un:

codice:
...
 x = nr.nextInt(Math.abs(r1)) + 1; 
...
sennò cambia tecnica di generazione:

codice:
...
x = (int) ((Math.random() * 36536) % r1) + 1;
...
fai un tracing sennò, facendo stampare al ciclo il valore delle variabili di volta in volta per capire in che punto si intoppa.