Você pode fazer o seguinte:
Veja a definição matemática de Random.nextDouble. O método que você quer , mas não dá o resultado exato que você quer, é nextDouble (ele gera números aleatórios no intervalo [0.0, 1.0[, não [1.0, 2.0] ) , tanto é que o próprio código-fonte de nextDouble é mostrado no javadoc.
Você pode fazer algumas contas* e fazer o seu próprio nextDouble que gere os números no intervalo [1.0, 2.0].
(acho que em vez de
return (((long)next(26) << 27) + next(27))
/ (double)(1L << 53);
você teria de usar algo como
return 1.0 + (((long)next(26) << 27) + nextLong (134217729)
/ (double)(1L << 53);
)
A propósito, para todos os efeitos tanto faz se os números estão no intervalo [1.0, 2.0[ (ou seja, simplesmente somando 1.0 ao retorno de nextDouble) ou se estão no intervalo [1.0, 2.0].
É que o valor 2.0 vai ser obtido com a probabilidade de 2 elevado a menos 53, o que daria 1,1102230246251565404236316680908e-16. Ou seja, em termos práticos, não vale a pena você tentar efetuar um sorteio que fique rodando por tanto tempo que você consiga obter o resultado de exatamente 2.0; você teria de fazer pelo menos 2 elevado a 52 (4.503.599.627.370.496) tentativas para ter uma probabilidade razoável de obter o número 2.0 no seu sorteio.