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?