In diesem Kapitel werden zunächst verschiedene Möglichkeiten erläutert, um Java -Zufallszahlen zu generieren, und demonstriert sie dann anhand von Beispielen.
Im Großen und Ganzen gibt es drei Möglichkeiten, in Java zufällige Zahlen zu generieren:
(01). Verwenden Sie System.CurrentTimemillis (), um eine langjährige Anzahl von Millisekunden der aktuellen Zeit zu erhalten.
(02). Geben Sie einen Doppelwert zwischen 0 und 1 über Math.Random () zurück.
(03). Generieren Sie eine Zufallszahl durch die zufällige Klasse. Dies ist eine professionelle zufällige Werkzeugkurs mit leistungsstarken Funktionen. Die erste Methode verwendet System.currentTimemillis (), um Zufallszahlen zu erhalten
Holen Sie sich die Zufallszahl über System.currentTimemillis (). Es wird tatsächlich die aktuelle Millisekundennummer erhalten, die vom Typ lang ist. Wie man es benutzt, ist wie folgt:
endgültig long l = system.currentTimemillis ();
Um eine Ganzzahl vom Typ int zu erhalten, konvertieren Sie einfach das obige Ergebnis, um int einzugeben. Holen Sie sich beispielsweise eine Int -Ganzzahl zwischen [0, 100). Die Methode lautet wie folgt:
endgültig long l = system.currentTimemillis (); endgültig int i = (int) (l % 100);
Die zweite Methode verwendet math.random (), um Zufallszahlen zu erhalten
Holen Sie sich zufällige Zahlen über Math.Random (). Tatsächlich gibt es einen Doppelwert zwischen 0 (einschließlich) und 1 (nicht enthalten) zurück. Wie man es benutzt, ist wie folgt:
endgültig doppelte d = math.random ();
Um eine Ganzzahl vom Typ int zu erhalten, konvertieren Sie einfach das obige Ergebnis, um int einzugeben. Holen Sie sich beispielsweise eine Int -Ganzzahl zwischen [0, 100). Die Methode lautet wie folgt:
endgültig doppelte d = math.random (); endgültig int i = (int) (d*100);
Der dritte Typ verwendet zufällige Klasse, um zufällige Zahlen zu erhalten
Holen Sie sich zufällige Zahlen durch die zufällige Klasse.
Wie man es benutzt, ist wie folgt:
(01) Erstellen Sie ein zufälliges Objekt. Es gibt zwei Möglichkeiten, ein zufälliges Objekt zu erstellen, wie folgt:
Randal randomall = new random (); // Standardkonstruktor Random Random = New Random (1000); // Saatgutnummer angeben
(02) Rufen Sie zufällige Zahlen über zufällige Objekte ab. Zufälliger unterstützt zufällige Werttypen: Boolean, Byte, int, lang, float, doppelt.
Holen Sie sich beispielsweise eine Int -Ganzzahl zwischen [0, 100). Die Methode lautet wie folgt:
int i2 = random.nextint (100);
Die Funktionsoberfläche von Randoms Funktion
// Konstruktor (i): Erstellen Sie einen neuen Zufallszahlengenerator. Random () // constructor (ii): Erstellen Sie einen neuen Zufallszahlengenerator mit einem einzigen langen Saatgut: public random (long saat) {setSeed (Samen); } In der nächsten Methode speichert sie den Status des Zufallszahlengenerators. Random (langer Saatgut) boolean Nextboolean () // gibt die nächste "boolean Typ" Pseudo-Random-Nummer zurück. void NextBytes (Byte [] buf) // Erzeugen Sie zufällige Bytes und platzieren Sie sie in Byte -Array BUF. Double NextDouble () // gibt eine zufällige Anzahl von "Doppelart zwischen [0,0, 1,0)" zurück. Float Nextfloat () // gibt eine zufällige Anzahl von "Float -Typen zwischen [0.0, 1,0)" zurück. Int NextInt () // gibt die zufällige Nummer "int type" zurück. Int NextInt (int n) // gibt eine zufällige Anzahl von "int -Typen zwischen [0, n)" zurück. Long Nextlong () // gibt die nächste "lange Typ" -Innennummer zurück. Synchronisiertes Double NextGaussian () // gibt die zufällige "Doppelart" -Fälle zurück, was in einer Gaußschen ("normal") Verteilung ein Doppelwert ist, mit einem Durchschnittswert von 0,0 und einer Standardabweichung von 1,0. Synchronisierte void Setseed (Long Seed) // Stellen Sie den Samen dieses Zufallszahlengenerators mit einem einzigen langen Samen ein.Beispiel für Zufallszahlen abrufen
EG1:
Das Folgende ist ein Beispiel, um die oben genannten drei Möglichkeiten zu demonstrieren, um Zufallszahlen zu erhalten. Der Quellcode lautet wie folgt (randomTest.java):
Import Java.util.random; Import Java.lang.Math;/*** Java -Testprogramm für Zufällige Nummer. Es gibt 3 Möglichkeiten, um zufällige Zahlen zu erhalten: * (01), verwenden Sie System.currentTimemillis (), um in der aktuellen Zeit eine langtypische Anzahl von Millisekunden zu erhalten. * (02) geben Sie einen Doppelwert zwischen 0 und 1 durch math.random () zurück. * (03) Generieren Sie eine Zufallszahl durch die zufällige Klasse. Dies ist eine professionelle zufällige Werkzeugkurs mit leistungsstarken Funktionen. * * @Author Skywang * @email [email protected] */public class randomTest {public static void main (String args []) {// Die Zufallszahl testSystemTimemillis () über das System des Systems timemillis () zurückgeben; // Rückgabe die Zufallszahl testmathrandom () über Maths Random (); // Erstellen Sie ein neues zufälliges Objekt mit "Samen von 1000" und testen Sie zufällige API über diesen Saatgut Testrandomapis (neu zufälliger (1000), "1. Random (1000)"); testrandomapis (neu zufällig (1000), "2. Zufälliger (1000)"); // Erstellen Sie ein "Standard -Seed" -Fandobjekt und testen Sie die API von Random durch diesen Seed Testrandomapis (new random (), "1st random ()"); testrandomapis (new random (), "2. randal ()"); } / ** * eine zufällige Nummer -01 zurückgeben: Testsysteme CurrentTimillis () * / private statische void testSystemTimemillis () {// endgültig long l = system.currentTimemillis (); // eine [0, ganzzahlige endgültige int i = (int) (l % 100); System.out.printf ("/n ---- System.currentTimillis () ---/nl =%Si =%s/n", l, i); } / ** * eine zufällige Nummer-02 zurückgeben: Testen Sie Mathematik von random () * / private statische void testMathrandom () {// geben eine zufällige Zahl von Doppeltypen über Maths Random () -Funktion, Bereich [0.0, 1,0) zurück, das doppelte doppelte d = math.random (); // eine Ganzzahl zwischen [0, 100) endgültig int i = (int) (d*100) erhalten; System.out.printf ("/n ----- math.random () ---/nd =%Si =%s/n", d, i); } / ** * Retail Number-03 zurückgeben: Testen Sie die API von Random * / private statische void testrandomapis (zufällig zufällig, String-Titel) {endgültig int buffer_len = 5; // Random Boolean Value boolean b = random.nextboolean (); // Random Array buf [] byte [] buf = new byte [buffer_len]; random.NextBytes (buf); // einen zufälligen Doppelwert erhalten, Bereich [0,0, 1,0) doppelte d = random.nextDouble (); // einen zufälligen Float -Wert erhalten, Bereich [0,0, 1,0) float f = random.nextfloat (); // Erhalten Sie einen zufälligen Int -Wert int i1 = random.nextint (); // einen zufälligen Int -Wert zwischen [0,100) int i2 = random.Nextint (100) erhalten; // Erhalten Sie eine zufällige Gaußsche Verteilung double g = random.nextGaussian (); // einen zufälligen langen Wert long l = random.nextlong (); System.out.printf ("/n ---%s ----/nb =%s, d =%s, f =%s, i1 =%s, i2 =%s, g =%s, l =%s, buf = [", title, b, d, f, i1, i2, g, l); für (byte bt: buf) system.out.printf ("%s", bt); System.out.println ("]"); }}
EG2:
Problem: Generieren Sie zufällige Zahlen zwischen (-10,10) mit zwei Ziffern, die nach dem Dezimalpunkt beibehalten wurden.
Lösung:
1. Zufällige Zahlengenerierungsfunktion zufällig r = neu Random (); R.Nextfloat (); // Erzeugen Sie die Zufallszahlen zwischen (0,1). Multiplizieren Sie die obige Zufallszahl mit 10, um eine Zufallszahl zwischen (0,10) zu erhalten.
2. Generieren Sie eine zufällige Zahl vom Booleschen Typ, um die positive und negative Anzahl der Zahl zu kontrollieren: r.Nextboolean ();
3. Die Methode, um zwei Dezimalstellen beizubehalten: Math.Floor (N*100+0,5)/100; Die erhaltene Zahl ist doppelter Typ.
Der Code ist wie folgt:
import Java.util.*; public class createrandom {public float numrandom () {float num; Random r = neu random (); float value = (float) (math.floor (r.Nextfloat ()*1000+0,5)/100); Boolean b = r.Nextboolean (); if (b) {num = value; } else {num = 0-value; } return num; } public static void main (String [] args) {createrandom cr = new Createrandom (); float num = cr.numrandom (); System.out.print (num); }}