java.util.Random のインスタンス r で、0 から n-1 の乱数を生成したいのであれば、(int)(r.nextDouble() * n) ではなく r.nextInt(n) を使用します。

nextInt メソッドへの引数は整数でなければなりません。 たとえば、-99から0までの乱数を生成したいなら、-r.nextInt(100) を使用してください。