Heim >Java >JavaBase >So generieren Sie sich nicht wiederholende Zufallszahlen in Java

So generieren Sie sich nicht wiederholende Zufallszahlen in Java

尚
Original
2019-12-09 14:48:1413164Durchsuche

So generieren Sie sich nicht wiederholende Zufallszahlen in Java

Zufallszahlen in Java generieren

1. Rufen Sie die Methode random() in der Math-Klasse unter java.lang auf, um Zufallszahlen zu generieren

Erstellen eine neue Datei Für Dateien mit dem Suffix Java lautet der Dateiname MyRandom. Schreiben Sie den folgenden Code in diese Klasse:

public class MyRandom {
public static void main(String[] args) {
int radom = (int)(Math.random()*10);
System.out.println(radom);
}
}

Darunter Math.random() //Erzeuge eine zufällige Dezimalzahl zwischen 0 und 1.

Erzeugt eine Ganzzahl zwischen 0 und 9 als: (int)(Math.random()*10);

Erzeugt eine Ganzzahl zwischen 1 und 10 als: (int)(Math.random ()*10 + 1);

Und so weiter: Um eine Zahl zwischen 0 und n zu generieren, sollte sie wie folgt geschrieben werden: Math.random()*n;

Erhalte eine Zufallszahl positive Ganzzahl der angegebenen Länge:

public static int buildRandom(int length) {
int num = 1;
double random = Math.random();
if (random < 0.1) {
random = random + 0.1;
} for (int i = 0; i < length; i++) {
num = num * 10;
}
return (int) ((random * num));
}

2. Rufen Sie die Random-Klasse unten in java.util auf. Instanzen dieser Klasse werden verwendet, um einen Pseudozufallszahlenstrom zu generieren und eine zufällige Ganzzahl zu generieren, dann rufen Sie auf die nextInt()-Methode dieser Klasse
Bevor Sie die Random-Klasse verwenden, importieren Sie java.util.Random unter dem Paket; der Code lautet:

import java.util.Random;
public class MyRandom {
public static void main(String[] args) {
Random rand = new Random();
int rInt = rand.nextInt(10);
System.out.println(rInt);
}
}

wobei Random rand = new Random() ist erstellt Ein neuer Zufallszahlengenerator; rand.nextInt(int n) ist ein gleichmäßig verteilter int-Wert zwischen 0 (einschließlich) und dem angegebenen Wert n (ausschließlich), der aus der Sequenz dieses Zufallszahlengenerators entnommen wird.

In Java generiert die Schleife in der angegebenen Ganzzahlbereichsklasse verschiedene Zufallszahlen

Um 6 verschiedene zufällige Ganzzahlen innerhalb von 20 zu generieren, zum Beispiel:

public class MyRandom {
public static void main(String[] args) {
int n = 20;
Random rand = new Random();
boolean[] bool = new boolean[n];
int randInt = 0;
for(int i = 0; i < 6 ; i++) {
do {
randInt = rand.nextInt(n);
}while(bool[randInt]);
bool[randInt] = true;
System.out.println(randInt);
}
}
}

Ein boolesches Variablenarray wird verwendet, um zu speichern, ob die Zahl generiert wird. Nach der Generierung wird die Zahl als entsprechender boolescher Wert in der Tabelle unten des booleschen Arrays wahr. Wenn die Zahl das nächste Mal generiert wird, tritt sie erneut in die do...while-Schleife ein, um Zahlen zu generieren, bis eine Zahl generiert wird, die noch nicht vorhanden war generiert, bevor generiert wird.

Zum Beispiel: Generieren Sie ein Array vom Typ int mit einer Länge von 50 und fügen Sie zufällig Zahlen zwischen 0 und 50 ein, die nicht wiederholt werden können.

Der Code lautet wie folgt:

public class MyRandom {
public static void main(String[] args) {
int[] intRandom = new int[50];
List mylist = new ArrayList(); //生成数据集,用来保存随即生成数,并用于判断
Random rd = new Random();
while(mylist.size() < 50) {
int num = rd.nextInt(51);
if(!mylist.contains(num)) {
mylist.add(num); //往集合里面添加数据。
}
}
for(int i = 0;i <mylist.size();i++) {
intRandom[i] = (Integer)(mylist.get(i));
}
}
}
/**
* 随机产生指定的范围不重复的集合
* @param size
* @return
*/
public static Set<Integer> generateRandomArray(int size){
Set<Integer> set = new LinkedHashSet<Integer>(); //集合是没有重复的值,LinkedHashSet是有顺序不重复集合,HashSet则为无顺序不重复集合
Integer num = size;
Integer range = size;
Random ran = new Random();
while(set.size() < num){
Integer tmp = ran.nextInt(range); //0-51之间随机选一个数
set.add(tmp);//直接加入,当有重复值时,不会往里加入,直到set的长度为52才结束
}
return set;
}

Für weitere Java-Kenntnisse beachten Sie bitte die Spalte Java Basic Tutorial.

Das obige ist der detaillierte Inhalt vonSo generieren Sie sich nicht wiederholende Zufallszahlen in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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