Ce chapitre explique d'abord plusieurs façons de générer des nombres aléatoires Java, puis les démontre à travers des exemples.
D'une manière générale, il existe trois façons de générer des nombres aléatoires en Java:
(01). Utilisez System.Currenttimemillis () pour obtenir un nombre long de millisecondes de type de l'heure actuelle.
(02). Renvoie une double valeur entre 0 et 1 via math.random ().
(03). Générez un nombre aléatoire via la classe aléatoire. Il s'agit d'une classe d'outils aléatoire professionnelle avec des fonctions puissantes. La première méthode utilise System.CurrentTimemillis () pour obtenir des nombres aléatoires
Obtenez le nombre aléatoire via System.CurrentTimemillis (). Il obtient en fait le numéro de millisecondes actuel, qui est long de type. Comment l'utiliser est comme suit:
Long final L = System.CurrentTimemillis ();
Pour obtenir un entier de type int, convertissez simplement le résultat ci-dessus en type int. Par exemple, obtenez un entier int entre [0, 100). La méthode est la suivante:
Final long l = System.Currenttimemillis (); final int i = (int) (l% 100);
La deuxième méthode utilise math.random () pour obtenir des nombres aléatoires
Obtenez des nombres aléatoires via math.random (). En fait, il renvoie une double valeur entre 0 (inclusive) et 1 (non incluse). Comment l'utiliser est comme suit:
Double final D = math.random ();
Pour obtenir un entier de type int, convertissez simplement le résultat ci-dessus en type int. Par exemple, obtenez un entier int entre [0, 100). La méthode est la suivante:
Double final D = math.random (); final int i = (int) (d * 100);
Le troisième type utilise une classe aléatoire pour obtenir des nombres aléatoires
Obtenez des nombres aléatoires via la classe aléatoire.
Comment l'utiliser est comme suit:
(01) Créez un objet aléatoire. Il existe deux façons de créer un objet aléatoire, comme suit:
Random Random = new Random (); // Constructeur par défaut aléatoire aléatoire = nouveau aléatoire (1000); // spécifiez le nombre de semences
(02) Obtenez des nombres aléatoires via des objets aléatoires. Random supporte des types de valeur aléatoires: booléen, octet, int, long, flottant, double.
Par exemple, obtenez un entier int entre [0, 100). La méthode est la suivante:
int i2 = random.nextint (100);
Interface de fonction aléatoire
// Constructeur (I): Créez un nouveau générateur de nombres aléatoires. Random () // Constructeur (II): Créez un nouveau générateur de nombres aléatoires en utilisant une seule graine longue: public aléatoire (graine longue) {SetSeed (semence); } La méthode suivante l'utilise pour enregistrer l'état du générateur de nombres aléatoires. Aléatoire (graine longue) booléen nextboolean () // renvoie le prochain numéro de pseudo-aléatoire "type booléen". void NextBytes (octet [] buf) // générer des octets aléatoires et les placer dans le tableau d'octets buf. Double NextDouble () // Renvoie un nombre aléatoire de "Double type entre [0,0, 1,0)". float nextFloat () // Renvoie un nombre aléatoire de "type de flotteur entre [0,0, 1.0)". int nextInt () // Renvoie le numéro aléatoire "int type" suivant. int nextInt (int n) // Renvoie un nombre aléatoire de "int type entre [0, n)". long nextLong () // renvoie le prochain numéro aléatoire "type long". Double NextGaussien synchronisé () // Renvoie le numéro aléatoire "double type" suivant, qui est une double valeur dans une distribution gaussienne ("normalement"), avec une valeur moyenne de 0,0 et un écart-type de 1,0. Senchronisé vide SetCeed (longue graine) // Réglez la graine de ce générateur de nombres aléatoires en utilisant une seule graine longue.Obtenez un exemple de numéro aléatoire
EG1:
Ce qui suit est un exemple pour démontrer les trois façons ci-dessus d'obtenir des nombres aléatoires. Le code source est le suivant (randomtest.java):
Importer java.util.random; Importer java.lang.math; / ** * Programme de tests de nombres aléatoires Java. Il existe 3 façons d'obtenir des nombres aléatoires: * (01), utilisez System.CurrentTimemillis () pour obtenir un nombre long de millisecondes de type à l'heure actuelle. * (02), renvoyez une double valeur entre 0 et 1 via math.random (). * (03) Générez un nombre aléatoire via la classe aléatoire. Il s'agit d'une classe d'outils aléatoire professionnelle avec des fonctions puissantes. * * @author skywang * @email [email protected] * / classe publique RandomTest {public static void main (String args []) {// renvoie le numéro aléatoire TestSystemMememillis () via CurrentTimemillis () de System; // Renvoie le nombre aléatoire TestMathRandom () via Math's Random (); // Créez un nouvel objet aléatoire avec "graine de 1000" et testez l'API aléatoire via cette graine Testrandomapis (nouveau aléatoire (1000), "1er aléatoire (1000)"); TestrandoMapis (nouveau aléatoire (1000), "2nd Random (1000)"); // Créez un objet aléatoire "par défaut" et testez l'API de Random via cette graine TestRandoMapis (new Random (), "1st Random ()"); TestRandoMapis (new Random (), "2nd Random ()"); } / ** * Renvoie un nombre aléatoire -01: CurrentTimemillis du système de test () * / private static void testSystemMemillis () {// final long l = system.currentTimeMillis (); // Obtenez un [0, entier final int i = (int) (l% 100); System.out.printf ("/ n ---- System.currentTimemillis () --- / nl =% Si =% s / n", l, i); } / ** * Renvoie un numéro aléatoire-02: Test Math's Random () * / private static void testmathrandom () {// renvoie un nombre aléatoire de type double via la fonction aléatoire () de mathématiques, gamme [0.0, 1.0) double d = math.random (); // Obtenez un entier entre [0, 100) final int i = (int) (d * 100); System.out.printf ("/ n ----- math.random () --- / nd =% si =% s / n", d, i); } / ** * RETOUR RABALD NUMBER-03: TEST API RABALD * / PRIVATE STATIC VOID TESTRANDOMAPIS (Random Random, Title String) {final int buffer_len = 5; // Obtenez une valeur booléenne aléatoire booléen b = random.nextBoolean (); // Obtenez un tableau aléatoire buf [] byte [] buf = new byte [buffer_len]; Random.NextBytes (BUF); // Obtenez une double valeur aléatoire, plage [0,0, 1,0) double d = random.NextDouble (); // Obtenez une valeur de flottement aléatoire, plage [0,0, 1,0) float f = random.nextfloat (); // Obtenez une valeur int aléatoire int i1 = random.nextint (); // Obtenez une valeur int aléatoire entre [0,100) int i2 = random.nextint (100); // Obtenez une distribution gaussienne aléatoire double g = random.NextGaussien (); // Obtenez une valeur longue aléatoire 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); pour (octet bt: buf) System.out.printf ("% s,", bt); System.out.println ("]"); }}
EG2:
Problème: générer des nombres aléatoires entre (-10,10) avec deux chiffres conservés après le point décimal.
Solution:
1. Fonction de génération de nombres aléatoires Randage R = new Random (); R.NextFloat (); // Générez des nombres aléatoires à point flottant entre (0,1). Multipliez le nombre aléatoire ci-dessus par 10 pour obtenir un nombre aléatoire entre (0,10).
2. Générez un nombre aléatoire de type booléen pour contrôler le nombre positif et négatif du nombre: R.NextBoolean ();
3. La méthode pour conserver deux décimales: math.floor (n * 100 + 0,5) / 100; Le nombre obtenu est de type double.
Le code est le suivant:
import java.util. *; classe publique Createrandom {public float numrandom () {float num; Random r = new Random (); Valeur float = (float) (math.floor (r.NextFloat () * 1000 + 0,5) / 100); Boolean B = R.NextBoolean (); if (b) {num = valeur; } else {num = 0-valeur; } return num; } public static void main (String [] args) {Createrandom cr = new Createrandom (); float num = cr.numrandom (); System.out.print (num); }}