Zufällige BigInteger-Werte in Java generieren
In Java kann das Generieren zufälliger Ganzzahlen innerhalb eines bestimmten Bereichs beim Umgang mit großen Zahlen eine Herausforderung darstellen. Das Problem tritt auf, wenn herkömmliche Methoden wie nextDouble() zur Zufallszahlengenerierung verwendet werden, da die generierten Werte möglicherweise nicht gleichmäßig über die Grenze von 2 hinaus verteilt sind53.
Verwendung des BigInteger-Konstruktors
Um dieses Problem zu beheben, stellt die BigInteger-Klasse einen Konstruktor bereit, der die Erstellung zufälliger BigInteger-Werte ermöglicht, die gleichmäßig innerhalb eines angegebenen Bitbereichs verteilt sind.
Konstruiert den BigInteger-Konstruktor:
<code class="java">public BigInteger(int numBits, Random rnd)</code>
Dieser Konstruktor benötigt zwei Parameter:
Erzeugen eines Zufallswerts innerhalb eines Bereichs Im Nicht-Zweierpotenz-Bereich von 0 bis n (einschließlich) kann eine Schleife verwendet werden:
Diese Schleife iteriert, bis ein gültiger Zufallswert erhalten wird. Dadurch wird sichergestellt, dass der generierte Wert gleichmäßig innerhalb des angegebenen Bereichs verteilt wird.
<code class="java">BigInteger randomNumber; do { randomNumber = new BigInteger(upperLimit.bitLength(), randomSource); } while (randomNumber.compareTo(upperLimit) >= 0);</code>
Iterationsanzahl optimieren
Um die Anzahl der Schleifeniterationen zu reduzieren, kann eine verfeinerte Lösung angewendet werden .
Dieser Ansatz beinhaltet eine Begrenzung der Anzahl der Iterationen, um eine übermäßige Schleifenausführung zu verhindern. Es gleicht Geschwindigkeit und Genauigkeit aus und verringert die Wahrscheinlichkeit einer großen Anzahl von Iterationen.
Das obige ist der detaillierte Inhalt vonWie generiert man in Java gleichmäßig verteilte zufällige BigInteger-Werte innerhalb eines bestimmten Bereichs?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!