Comment générer un hasard BigInteger valeur en Java?

J'ai besoin de générer arbitrairement grand entiers aléatoires compris entre 0 (inclus) au n (exclusif). Ma première pensée a été d'appeler nextDouble et multiplier par n, mais une fois que n est plus grand que 253, les résultats ne seraient plus distribués de manière uniforme.

BigInteger a la suite de constructeur disponibles:

public BigInteger(int numBits, Random rnd)

Constructions généré de façon aléatoire une BigInteger, distribués de manière uniforme sur l'intervalle de 0 à (2numBits - 1), inclus.

Comment cela peut-il être utilisé pour obtenir une valeur aléatoire dans la plage de 0 - n, où n n'est pas une puissance de 2?