1. Varför skapar du lokala variabler som ej används?
2. "Loss of precision"-meddelandet kan du åtgärda genom att typomvandla uttrycket Math.random() * (hi - lo) + lo till en int innan tilldelning.
3. Vad innehåller distance?
int lo = 0;
int hi = 100;
Random r = new Random();
// Slumpa en int mellan 0 och 99.
int distance = r.nextInt(hi-lo)+lo;
Det är betydligt snabbare än "riktig random" och om man går såhär så skapar man en ny random vajre gång.
Jag skulle skapa random-objektet som ett klassattribut eftersom det då ger en statistisk normalfördelning av integers baserat på den millisekund som randomobjektet är skapat.