1. Comment générer des nombres aléatoires en Java
1. Utilisez Math.Random () dans J2SE pour faire en sorte que le système sélectionne au hasard une décimale à double type entre 0 et 1, multipliez-la par un nombre, comme 25, et vous pouvez obtenir un nombre aléatoire dans la plage de 0 et 25. Ce n'est pas disponible dans J2Me;
int randomnumber = (int) math.round (math.random () * (max-min) + min);
2. Il existe une méthode CurrentTimemillis () dans la classe système. Cette méthode renvoie un long numéro milliseconde de 0h00 le 1er janvier 1970 à celui actuel. Il peut être utilisé comme nombre aléatoire, et il peut également être modulo à certains nombres, ce qui peut limiter la plage de nombres aléatoires. Lorsque cette méthode génère plusieurs nombres aléatoires en même temps dans une boucle, ce sera la même valeur, qui a certaines limites!
long randomnum = system.currentTimeMillis (); int randomNumber = (int) randomnum% (max-min) + min;
3. Utilisez la classe Java.util.Random pour générer un générateur de nombres aléatoires, qui est également une méthode que nous utilisons souvent pour obtenir des nombres aléatoires dans les programmes J2ME. Il a deux formes de constructeurs, à savoir aléatoire () et aléatoire (graine longue). Random () utilise l'heure actuelle, System.Currenttimemillis (), comme graine du générateur, et aléatoire (graine longue) utilise la graine spécifiée comme graine du générateur. Une fois l'objet générateur de nombres aléatoires (aléatoire), différents types de nombres aléatoires sont obtenus en appelant différentes méthodes: nextInt (), nextLong (), nextFloat (), nextDouble (), etc. Si deux objets aléatoires utilisent la même graine (par exemple, les deux sont 25) et appellent la même fonction dans le même ordre, ils reviennent exactement la même valeur.
Aléatoire aléatoire = nouveau aléatoire (); int randomnumber = random.nextint (max)% (max-min + 1) + min;
2. N Nombres non réactives dans une plage aléatoire donnée
1. Méthode 1: la plus simple et la plus facile à comprendre deux cycles pour éliminer le poids lourd
/ ** * Spécifiez au hasard n nombres non répétitifs dans la plage * La méthode la plus simple et la plus basique * @param min Spécifiez la plage minimale * @param max spécifie la plage maximale * @param n nombre de nombres aléatoires * / public static int [] randomcommon (int min, int max, int n) {if (n> (max - min + 1) || max <min) {return null; } int [] result = new int [n]; int count = 0; while (count <n) {int num = (int) (math.random () * (max - min)) + min; Flag booléen = true; pour (int j = 0; j <n; j ++) {if (num == result [j]) {flag = false; casser; }} if (flag) {result [count] = num; Count ++; }} Retour Résultat; } 2. Méthode 2: En utilisant les fonctionnalités de HashSet, seules les valeurs différentes peuvent être stockées
/ ** * Spécifiez au hasard n nombres non répétitifs dans la plage * En utilisant la fonctionnalité de hashset, seules les différentes valeurs peuvent être stockées * @param min Spécifiez la valeur minimale de la plage * @param max spécifier la valeur maximale de la plage * @param n numéro aléatoire * @param hashset <inger> Définir le nombre de résultats aléatoires * / public static randomset (int Min, int max, int n, hashset <int. (n> (max - min + 1) || max <min) {return; } pour (int i = 0; i <n; i ++) {// Appelez la méthode math.random () int num = (int) (math.random () * (max - min)) + min; set.add (num); // Enregistrer différents nombres dans hashSet} int setSize = set.size (); // Si le numéro stocké est inférieur au nombre spécifié, alors génére de manière récursive le nombre aléatoire du numéro restant, et LOOP de sorte que la taille spécifiée soit atteinte si (setSize <n) {randomset (min, max, n - setSize, set); // recursive}} 3. Méthode 3: Exclure les nombres arrivés au hasard
/ ** * Spécifiez au hasard n nombres non perpétiels dans la plage * Dans le tableau non perpétiel initialisé, un nombre est généré au hasard et mis dans le résultat. * Remplacer le nombre envoyé au hasard au tableau à sélectionner par le nombre correspondant à l'indice du tableau à sélectionner (LEN-1) * puis générer au hasard le prochain numéro aléatoire à partir de Len-2, et ainsi max, int n) {int len = max-min + 1; if (max <min || n> len) {return null; } // Initialisez le tableau à sélectionner pour une plage donnée int [] source = new int [len]; for (int i = min; i <min + len; i ++) {source [i-min] = i; } int [] result = new int [n]; Random rd = new Random (); int index = 0; pour (int i = 0; i <result.length; i ++) {// Array à sélectionner 0 à (Len-2) index aléatoire = math.abs (rd.nextint ()% len--); // Mettez le nombre aléatoire dans le résultat résultat résultat [i] = source [index]; // Remplacez le nombre reçu au hasard dans le tableau à sélectionner par le nombre correspondant à l'indice du tableau à sélectionner (LEN-1) avec le nombre correspondant à l'indice du tableau à sélectionner (LEN-1). source [index] = source [len]; } Retour Résultat; } Instance d'appel:
public static void main (String [] args) {int [] result1 = randomCommon (20,50,10); for (int i: result1) {System.out.println (i); } int [] result2 = randomArray (20,50,10); for (int i: result2) {System.out.println (i); } HashSet <Integer> set = new HashSet <Integer> (); RandomSet (20,50,10, set); pour (int j: set) {System.out.println (j); }}3. Exemple de code
Test de package; Importer java.util.hashset; import java.util.random; extrait de classe publique {/ ** * Spécifiez au hasard n numéros de non-répétition dans la plage * dans le tableau initialisé non réapité, générer aléatoirement un nombre et le mettre dans le résultat, * remplacer le nombre de chantiers aléatoire pour être envoyé aléatoirement par le nombre de numéro Générez aléatoirement le prochain numéro aléatoire à partir de LEN-2, et ainsi de suite * @param max spécifie la plage maximale * @param min Spécifiez la plage minimale * @param n Nombre de nombres aléatoires * @return int [] Random Number Results Set * / public static int [] randomArray (int min, int max, int n) {int len = max-min + 1; if (max <min || n> len) {return null; } // Initialisez le tableau à sélectionner pour une plage donnée int [] source = new int [len]; for (int i = min; i <min + len; i ++) {source [i-min] = i; } int [] result = new int [n]; Random rd = new Random (); int index = 0; pour (int i = 0; i <result.length; i ++) {// tableau à sélectionner 0 à (Len-2) un indice aléatoire int s = rd.nextint ()% len; // System.out.print (s-- + ","); index = math.abs (rd.nextint ()% len -); // system.out.println (index); // Mettez le numéro reçu au hasard dans le résultat de résultat résultat [i] = source [index]; // Remplacez le nombre reçu au hasard dans le tableau à sélectionner par le nombre correspondant de l'indice du tableau à sélectionner (LEN-1) Source [index] = source [LEN]; } Retour Résultat; } public static void main (string [] args) {// int [] result1 = randomCommon (20,50,10); // for (int i: result1) {// system.out.println (i); //} int [] result2 = randomArray (0,4,5); for (int i: result2) {System.out.print (i); } // hashSet <Integer> set = new HashSet <Integer> (); // randomset (20,50,10, set); // for (int j: set) {// system.out.println (j); //}}}Ce qui précède concerne cet article, j'espère qu'il sera utile pour tout le monde d'apprendre la programmation Java.