1. So generieren Sie zufällige Java -Zahlen
In Java gibt es drei allgemeine Konzepte von Zufallszahlen.
1. Verwenden Sie System.
2. RECHTEN SIE EINEN DOUBLEMALTEN zwischen 0 und 1 durch Math.Random ().
3. Generieren Sie eine zufällige Zahl durch die zufällige Klasse.
2. Zufällige API -Beschreibung
1. Java API Beschreibung
Eine Instanz der zufälligen Klasse wird verwendet, um einen Pseudo-Random-Zahlenstrom zu generieren. Diese Klasse verwendet 48-Bit-Samen und modifiziert sie mit linearen Kongruenzformeln (siehe Donald Knuths The Art of Computer Programing, Band 2, Abschnitt 3.2.1).
Wenn zwei zufällige Instanzen mit demselben Samen erstellt werden, wird dieselbe Abfolge von Methodenaufrufen für jede Instanz erstellt und die gleiche Abfolge von Zahlen erzeugt und zurückgibt. Um die Implementierung von Attributen zu gewährleisten, wird für die Klasse zufällig ein spezifischer Algorithmus angegeben.
Viele Anwendungen finden die zufällige Methode in der Mathematikklasse leichter zu verwenden.
2. Zusammenfassung der Methode
Zufällig()
Erstellen Sie einen neuen Zufallszahlengenerator.
Zufällig (langer Samen)
Erstellen Sie einen neuen Zufallszahlengenerator mit einem einzigen langen Samen:
public random (long saat) {setSeed (saat);
geschützte int als nächstes (int bit)
Generieren Sie die nächste Pseudo-Random-Nummer.
Boolean Nextboolean ()
Gibt die nächste Pseudo-Random-Zahl zurück, die ein gleichmäßig verteiltes boolescher Wert ist, der aus der Abfolge dieses Zufallszahlengenerators entnommen wurde.
void NextBytes (Byte [] Bytes)
Generieren Sie zufällige Bytes und platzieren Sie sie in ein von Benutzer gelieferter Byte-Array.
Double NextDouble ()
Gibt die nächste Pseudo-Random-Zahl zurück, die ein Doppelwert gleichmäßig zwischen 0,0 und 1,0 ist und aus der Abfolge dieses Zufallszahlengenerators entnommen wird.
Float Nextfloat ()
Gibt die nächste Pseudo-Random-Zahl zurück, die ein Float-Wert ist, der gleichmäßig zwischen 0,0 und 1,0 verteilt ist und aus der Abfolge dieses Zufallszahlengenerators entnommen wird.
Double NextGaussian ()
Gibt die nächste Pseudo-Random-Zahl zurück, die eine Gaußsche ("normal") Verteilung ist, die aus der Abfolge dieses Zufallszahlengenerators mit einem Durchschnitt von 0,0 und einer Standardabweichung von 1,0 entnommen wird.
int NextInt ()
Gibt die nächste Pseudo-Random-Zahl zurück, die der gleichmäßig verteilte Int-Wert in der Reihenfolge dieses Zufallszahlengenerators ist.
int NextInt (int n)
Gibt eine Pseudo-Random-Nummer zurück, die ein int-Wert ist, der gleichmäßig zwischen 0 (einschließlich) und dem angegebenen Wert (ausgenommen) aus der Reihenfolge dieses Zufallszahlengenerators entnommen wird.
Lange nächste Long ()
Gibt die nächste Pseudo-Random-Zahl zurück, die ein einheitlich verteilter langer Wert ist, der aus der Reihenfolge dieses Zufallszahlengenerators entnommen wird.
Hohlraum Setseed (langer Samen)
Stellen Sie den Samen dieses Zufallszahlengenerators mit einem einzigen langen Samen ein.
3. Anweisungen für zufällige Klassennutzung
1. Der Unterschied zwischen dem Tragen von Samen und nicht dem Tragen von Samen
Die grundlegende Verwendung der zufälligen Klasse besteht darin, die Fälle von zufällig mit Samen und ohne Samen zu teilen.
In den Laiengründen beträgt der Unterschied zwischen den beiden:
Für Samen ist das von jedem Lauf erzeugte Ergebnis gleich.
Wenn Sie keine Samen haben, ist das, was Sie generieren, jedes Mal, wenn Sie laufen, zufällig und es gibt überhaupt kein Muster.
2. Erstellen Sie ein zufälliges Objekt ohne Samen
Random random = new random ();
3. Erstellen Sie ein zufälliges Objekt ohne Samen
Es gibt zwei Möglichkeiten:
1) zufälliges zufälliger = neuer zufälliger (555L);
2) Random Random = new random ();
random.SeetSeed (555L);
4. Umfassende Anwendung
Das Folgende ist eine kürzlich geschriebene Toolklasse für Zufallszahlen, um die Nutzung anzuzeigen:
Die Codekopie lautet wie folgt:
import Java.util.random;
/**
* Zufallszahl, String -Tool
* Benutzer: Leishimin
* Datum: 2008-11-19 9:43:09
*/
öffentliche Klasse Randomutils {
public static Final String Allchar = "0123456789abcdefghijklMnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";
public static Final String Letterchar = "AbcDefghijklMnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";
public static final String numberchar = "0123456789";
/**
* Geben Sie eine zufällige Länge zufällige Zeichenfolge zurück (einschließlich nur Buchstaben und Nummern der oberen und unteren Fall).
*
* @Param Länge zufällige Zeichenfolgelänge
* @return zufällige Zeichenfolge
*/
public static String Generatestring (int Länge) {
StringBuffer sb = new StringBuffer ();
Random random = new random ();
für (int i = 0; i <länge; i ++) {
Sb.Append (AllChar.Charat (random.Nextint (AllChar.Length ())));
}
return sb.tostring ();
}
/**
* Geben Sie eine zufällige reine Buchstabenzeichenfolge zurück (einschließlich nur oberer und unterer Fallbuchstaben).
*
* @Param Länge zufällige Zeichenfolgelänge
* @return zufällige Zeichenfolge
*/
public static String GeneratemixString (int Länge) {
StringBuffer sb = new StringBuffer ();
Random random = new random ();
für (int i = 0; i <länge; i ++) {
sb.Append (AllChar.Charat (random.Nextint (Letterchar.length ())));
}
return sb.tostring ();
}
/**
* Geben Sie eine zufällige Länge Random Pure Capital Letter -Zeichenfolge zurück (einschließlich nur oberer Fallbuchstaben)
*
* @Param Länge zufällige Zeichenfolgelänge
* @return zufällige Zeichenfolge
*/
public static String GenerateloWerString (int Länge) {
return GeneratemixString (Länge) .TolowerCase ();
}
/**
* Geben Sie eine zufällige Länge randomarischer Kleinbuchstaben zurück (einschließlich nur Großbuchstaben und Kleinbuchstaben).
*
* @Param Länge zufällige Zeichenfolgelänge
* @return zufällige Zeichenfolge
*/
public statische Zeichenfolge GenerateUpperString (int Länge) {
return GeneratemixString (Länge) .ToUpperCase ();
}
/**
* Erzeugen Sie eine reine 0-String mit fester Länge
*
* @param Länge String Länge
* @Return Pure 0 String
*/
public statische Zeichenfolge GeneratezeroString (int Länge) {
StringBuffer sb = new StringBuffer ();
für (int i = 0; i <länge; i ++) {
sb.Append ('0');
}
return sb.tostring ();
}
/**
* Generieren Sie eine Zeichenfolge mit fester Länge basierend auf der Zahl, die Länge reicht nicht aus, um zum vorherigen hinzugefügt zu werden.
*
* @param num nummer
* @param fixdlenth String Länge
* @Return feste Länge Zeichenfolge
*/
public static String tofixDLengthString (Long num, int fixdlenth) {
StringBuffer sb = new StringBuffer ();
String strnum = string.Valueof (num);
if (fixDlenth - strnum.length ()> = 0) {
sb.Append (GeneratezerOstring (FixDlenth - Strnum.length ()));
} anders {
Neue RunTimeException werfen ("Nummer" + Num + "in eine Zeichenfolge mit Länge" + FixDlenth + "Ausnahme tritt auf!");
}
sb.Append (strnum);
return sb.tostring ();
}
/**
* Generieren Sie eine Zeichenfolge mit fester Länge basierend auf der Zahl, die Länge reicht nicht aus, um zum vorherigen hinzugefügt zu werden.
*
* @param num nummer
* @param fixdlenth String Länge
* @Return feste Länge Zeichenfolge
*/
public static String tofixDLengthString (int num, int fixdlenth) {
StringBuffer sb = new StringBuffer ();
String strnum = string.Valueof (num);
if (fixDlenth - strnum.length ()> = 0) {
sb.Append (GeneratezerOstring (FixDlenth - Strnum.length ()));
} anders {
Neue RunTimeException werfen ("Nummer" + Num + "in eine Zeichenfolge mit Länge" + FixDlenth + "Ausnahme tritt auf!");
}
sb.Append (strnum);
return sb.tostring ();
}
public static void main (String [] args) {
System.out.println (GenerateString (15));
System.out.println (GeneratemixString (15));
System.out.println (GenerateloWerString (15));
System.out.println (GenerateUpperString (15));
System.out.println (GeneratezerOstring (15));
System.out.println (TofixDLengthString (123, 15));
System.out.println (TofixDLengthString (123L, 15));
}
}
Auslaufergebnisse:
vwmbpinbzfgcPhg
23Hyrahdjkkpwmv
Tigowetbwkm1nde
Bpz1nejphb115n
0000000000000000
000000000000123
000000000000123
Vorgang mit dem Ausgangscode 0 abgeschlossen
6. Zusammenfassung
Es werden zufällige Zahlen sehr häufig verwendet.
2. Objekte der zufälligen Klassen haben einen Unterschied zwischen dem Tragen von Samen.
3.. Es gibt zwei Möglichkeiten, Saatgutobjekte mit zufälligen Zahlen mit dem gleichen Effekt zu erstellen. Aber zufällige Zahlen mit Samen scheinen nicht nützlich zu sein.
V.
5. Sie können zufällige Zahlen verwenden, um komplexe Zufallsdaten wie zufällige Zeichenfolgen zu implementieren.
6. Studieren Sie keine zufälligen Zahlen, die sich nicht wiederholen, sondern ist nicht sehr aussagekräftig.
Ergänzungscode:
Die Codekopie lautet wie folgt:
Paket com.test;
import Java.util.random;
öffentliche Klasse Randomutils {
public static Final String Allchar = "0123456789abcdefghijklMnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";
public static Final String Letterchar = "AbcDefghijkllmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";
public static final String numberchar = "0123456789";
/**
* Geben Sie eine zufällige Länge zufällige Zeichenfolge zurück (einschließlich nur Buchstaben und Nummern der oberen und unteren Fall).
* @Param Länge zufällige Zeichenfolgelänge
* @return zufällige Zeichenfolge
*/
öffentliche statische String -Generatestring (int Länge)
{
StringBuffer sb = new StringBuffer ();
Random random = new random ();
für (int i = 0; i <länge; i ++) {
Sb.Append (AllChar.Charat (random.Nextint (AllChar.Length ())));
}
return sb.tostring ();
}
/**
* Geben Sie eine zufällige reine Buchstabenzeichenfolge zurück (einschließlich nur oberer und unterer Fallbuchstaben).
* @Param Länge zufällige Zeichenfolgelänge
* @return zufällige Zeichenfolge
*/
öffentliche statische String -GeneratemixString (int Länge)
{
StringBuffer sb = new StringBuffer ();
Random random = new random ();
für (int i = 0; i <länge; i ++)
{
sb.Append (AllChar.Charat (random.Nextint (Letterchar.length ())));
}
return sb.tostring ();
}
/**
* Geben Sie eine zufällige Länge Random Pure Capital Letter -Zeichenfolge zurück (einschließlich nur oberer Fallbuchstaben)
*
* @Param Länge zufällige Zeichenfolgelänge
* @return zufällige Zeichenfolge
*/
public static String GenerateloWerString (int Länge) {
return GeneratemixString (Länge) .TolowerCase ();
}
/**
* Geben Sie eine zufällige Länge randomarischer Kleinbuchstaben zurück (einschließlich nur Großbuchstaben und Kleinbuchstaben).
*
* @Param Länge zufällige Zeichenfolgelänge
* @return zufällige Zeichenfolge
*/
public statische Zeichenfolge GenerateUpperString (int Länge) {
return GeneratemixString (Länge) .ToUpperCase ();
}
/**
* Erzeugen Sie eine reine 0-String mit fester Länge
*
* @param Länge String Länge
* @Return Pure 0 String
*/
public statische Zeichenfolge GeneratezeroString (int Länge) {
StringBuffer sb = new StringBuffer ();
für (int i = 0; i <länge; i ++) {
sb.Append ('0');
}
return sb.tostring ();
}
/**
* Generieren Sie eine Zeichenfolge mit fester Länge basierend auf der Zahl, die Länge reicht nicht aus, um zum vorherigen hinzugefügt zu werden.
*
* @param num nummer
* @param fixdlenth String Länge
* @Return feste Länge Zeichenfolge
*/
public static String tofixDLengthString (Long num, int fixdlenth) {
StringBuffer sb = new StringBuffer ();
String strnum = string.Valueof (num);
if (fixDlenth - strnum.length ()> = 0) {
sb.Append (GeneratezerOstring (FixDlenth - Strnum.length ()));
} anders {
Neue RunTimeException werfen ("Nummer" + Num + "in eine Zeichenfolge mit Länge" + FixDlenth + "Ausnahme tritt auf!");
}
sb.Append (strnum);
return sb.tostring ();
}
/**
* Generieren Sie eine Zeichenfolge mit fester Länge basierend auf der Zahl, die Länge reicht nicht aus, um zum vorherigen hinzugefügt zu werden.
*
* @param num nummer
* @param fixdlenth String Länge
* @Return feste Länge Zeichenfolge
*/
public static String tofixDLengthString (int num, int fixdlenth) {
StringBuffer sb = new StringBuffer ();
String strnum = string.Valueof (num);
if (fixDlenth - strnum.length ()> = 0) {
sb.Append (GeneratezerOstring (FixDlenth - Strnum.length ()));
} anders {
Neue RunTimeException werfen ("Nummer" + Num + "in eine Zeichenfolge mit Länge" + FixDlenth + "Ausnahme tritt auf!");
}
sb.Append (strnum);
return sb.tostring ();
}
/**
* Die Anzahl der Len -Ziffern, die jedes Mal generiert werden, ist unterschiedlich
* @param param
* @return Anzahl der festen Länge
*/
public static int getNotSimple (int [] param, int len)
{
Random rand = new random ();
für (int i = param.length; i> 1; i--)
{
int index = rand.nextint (i);
int tmp = param [index];
param [index] = param [i - 1];
Param [i - 1] = TMP;
}
int result = 0;
für (int i = 0; i <len; i ++)
{
Ergebnis = Ergebnis * 10 + Param [i];
}
Rückgabeergebnis;
}
public static void main (String [] args) {
System.out.println (GenerateString (10));
System.out.println (GeneratemixString (10));
System.out.println (GenerateloWerString (10));
System.out.println (GenerateUpperString (10));
System.out.println (GeneratezerOstring (10));
System.out.println (TofixDLengthString (123, 10));
System.out.println (TofixDLengthString (123L, 10));
int [] in = {1,2,3,4,5,6,7};
System.out.println (getNotSimple (in, 3));
}
}