Wie erstelle ich einen zufälligen BigInteger-Wert in Java?

Ich muss willkürlich große Zufallszahlen im Bereich von 0 (einschließlich) bis n (ausschließlich) erzeugen. Mein erster Gedanke war anzurufennextDouble und mit n multiplizieren, aber sobald n größer als 2 wird53würden die Ergebnisse nicht mehr gleichmäßig verteilt.

BigInteger hat den folgenden Konstruktor zur Verfügung:

public BigInteger(int numBits, Random rnd)

Konstruiert eine zufällig generierte BigInteger-Zahl, die gleichmäßig über den Bereich von 0 bis (2 verteilt istnumBits - 1) einschließlich.

Wie kann dies verwendet werden, um einen zufälligen Wert im Bereich von 0 bis n zu erhalten, wobei n keine Potenz von 2 ist?