Ultimamente non sei l'unico che posta questioni relative alla generazione di numeri casuali in un dato intervallo, posto questa minuscola classettina che ho buttato giù, magari può essere utile a te o ad altri

codice:
public class RandomGeneratorImproved {

    private double min;
    private double max;

    public RandomGeneratorImproved() {
	this.min = 0.0;
	this.max = 0.1;
    }

    //volutamente priva di setter singoli per evitare problemi di congruenza
    //(max < min)
    public RandomGeneratorImproved(double min, double max) {
	if(min <= max)
	{
	    this.min = min;
	    this.max = max;
	}
    }

    public double getMin() {
	return min;
    }

    public double getMax() {
	return max;
    }

    //ritorna un numero reale compreso nell'intervallo
    public double getRandom()
    {
	return Math.random() * (max - min) + min;
    }

    //ritorna un valore intero compreso nell'intervallo
    public long getRandomLong()
    {
	return Math.round(getRandom());
    }

    //main class di esempio
    public static void main(String[] args) {
	RandomGeneratorImproved generator = new RandomGeneratorImproved(-3,3);
	for (int i = 0; i < 100; i++) {
	    System.out.println(generator.getRandom());
	}
	for (int i = 0; i < 100; i++) {
	    System.out.println(generator.getRandomLong());
	}
    }
}
Come puoi vedere è molto banale, e non fa altro che rimappare il valore generato dalla funzione random (di default compreso tra 0.0 e 0.1) in un differente intervallo, sia esso più piccolo, più grande o traslato a destra o a sinistra rispetto ad esso