Heim > Java > javaLernprogramm > Hauptteil

Wie generiert man in Java gleichmäßig verteilte zufällige BigInteger-Werte innerhalb eines bestimmten Bereichs?

Linda Hamilton
Freigeben: 2024-10-25 02:46:02
Original
809 Leute haben es durchsucht

How to Generate Uniformly Distributed Random BigInteger Values within a Specific Range in Java?

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>
Nach dem Login kopieren

Dieser Konstruktor benötigt zwei Parameter:

  • numBits: Gibt die Anzahl der Bits für den generierten Wert an
  • rnd: Ein Zufallsobjekt, das zum Erzeugen von Zufallswerten verwendet wird.

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!