Este capítulo primero explica varias formas de generar números aleatorios Java y luego los demuestra a través de ejemplos.
En términos generales, hay tres formas de generar números aleatorios en Java:
(01). Use System.CurrentTimemillis () para obtener un número de milisegundos de tipo largo de la hora actual.
(02). Devuelva un valor doble entre 0 y 1 a través de Math.Random ().
(03). Genere un número aleatorio a través de la clase aleatoria. Esta es una clase profesional de herramientas aleatorias con funciones poderosas. El primer método utiliza System.CurrentTimemillis () para obtener números aleatorios
Obtenga el número aleatorio a través de System.CurrentTimemillis (). En realidad, está obteniendo el número actual de milisegundos, que es de tipo largo. Cómo usarlo es el siguiente:
final long l = system.currentTimemillis ();
Para obtener un entero de tipo int, simplemente convierta el resultado anterior en type int. Por ejemplo, obtenga un entero int entre [0, 100). El método es el siguiente:
final long l = System.CurrentTimemillis (); final int i = (int) (l % 100);
El segundo método utiliza math.random () para obtener números aleatorios
Obtenga números aleatorios a través de Math.Random (). De hecho, devuelve un valor doble entre 0 (inclusive) y 1 (no incluido). Cómo usarlo es el siguiente:
Doble final D = Math.random ();
Para obtener un entero de tipo int, simplemente convierta el resultado anterior en type int. Por ejemplo, obtenga un entero int entre [0, 100). El método es el siguiente:
Doble final d = Math.random (); final int i = (int) (d*100);
El tercer tipo usa clase aleatoria para obtener números aleatorios
Obtenga números aleatorios a través de la clase aleatoria.
Cómo usarlo es el siguiente:
(01) Crear un objeto aleatorio. Hay dos formas de crear un objeto aleatorio, como sigue:
Random Random = new Random (); // Constructor predeterminado Random Random = New Random (1000); // Especificar el número de semillas
(02) Obtenga números aleatorios a través de objetos aleatorios. Apoya al azar tipos de valor aleatorio: booleano, byte, int, largo, flotante, doble.
Por ejemplo, obtenga un entero int entre [0, 100). El método es el siguiente:
int i2 = random.nextInt (100);
Interfaz de función aleatoria
// constructor (i): cree un nuevo generador de números aleatorios. Random () // constructor (ii): cree un nuevo generador de números aleatorios usando una sola semilla larga: pública aleatoria (semilla larga) {setseed (semilla); } El siguiente método lo usa para guardar el estado del generador de números aleatorios. Aleatorio (semilla larga) boolean nextBoolean () // Devuelve el siguiente número de pseudo-aleatorio "tipo booleano". Void NextBytes (byte [] buf) // Genere bytes aleatorios y colóquelos en la matriz byte buf. Double NextDouble () // Devuelve un número aleatorio de "Tipo doble entre [0.0, 1.0)". Float NextFloat () // Devuelve un número aleatorio de "Tipo de flotación entre [0.0, 1.0)". int nextInt () // Devuelve el siguiente número aleatorio "int type". int nextInt (int n) // Devuelve un número aleatorio de "Tipo int entre [0, n)". Long NextLong () // Devuelve el siguiente número aleatorio de "tipo largo". Sincronizado Double NextGaussian () // Devuelve el siguiente número aleatorio de "tipo doble", que es un valor doble en una distribución gaussiana ("normalmente"), con un valor promedio de 0.0 y una desviación estándar de 1.0. setseed sincronizado vacío (semilla larga) // Establezca la semilla de este generador de números aleatorios usando una sola semilla larga.Obtener un ejemplo de número aleatorio
Eg1:
El siguiente es un ejemplo para demostrar las tres formas anteriores de obtener números aleatorios. El código fuente es el siguiente (randomTest.java):
import java.util.random; import java.lang.math;/*** Programa de prueba de números aleatorios Java. Hay 3 formas de obtener números aleatorios: * (01), use System.CurrentTimemillis () para obtener un número de milisegundos de tipo largo en el momento actual. * (02), devuelva un valor doble entre 0 y 1 a través de Math.random (). * (03) Genere un número aleatorio a través de la clase aleatoria. Esta es una clase profesional de herramientas aleatorias con funciones poderosas. * * @author Skywang * @email [email protected] */public class RandomTest {public static void main (string args []) {// devuelve el número aleatorio testSystemEmillis () a través del sistema TurnTImEmillis (); // devuelve el número aleatorio testMathRandom () a través de Math's Random (); // Cree un nuevo objeto aleatorio con "semilla de 1000" y pruebe la API aleatoria a través de esta semilla testrandomapis (nueva aleatoria (1000), "1st aleation (1000)"); testRandomapis (nuevo aleatorio (1000), "2nd Random (1000)"); // Cree un objeto aleatorio de "semilla predeterminada" y pruebe la API de Random a través de esta semilla testRandomapis (nueva aleatoria (), "1st Random ()"); testRandomapis (new Random (), "2nd Random ()"); } / ** * Devuelve un número aleatorio -01: Test's CurrentTimemillis () * / private static void testSystemEmemillis () {// final long l = system.currentTimemillis (); // obtener un [0, entero final int i = (int) (l % 100); System.out.printf ("/n ---- System.CurrentTimemillis () ---/nl =%Si =%s/n", l, i); } / ** * Devuelve un número aleatorio-02: Test Math's Random () * / Private static void testMathRandom () {// Devuelve un número aleatorio de doble tipo a través de la función Random () de Math () [0.0, 1.0) Doble final d = Math.Random (); // obtener un entero entre [0, 100) final int i = (int) (d*100); System.out.printf ("/n ----- Math.random () ---/nd =%si =%s/n", d, i); } / ** * return Random Number-03: Test API * / private static void testRandomAPIS (aleatorio, titular de cadena) {final int buffer_len = 5; // Obtener valor booleano aleatorio booleano b = random.nextboolean (); // Obtener una matriz aleatoria buf [] byte [] buf = new byte [buffer_len]; Random.NextBytes (BUF); // obtener un valor doble aleatorio, rango [0.0, 1.0) doble d = random.nextDouble (); // Obtener un valor flotante aleatorio, rango [0.0, 1.0) flotante f = random.nextfloat (); // Obtener un valor interfirratorio int i1 = random.nextInt (); // Obtener un valor INT aleatorio entre [0,100) int i2 = random.nextint (100); // Obtener una distribución gaussiana aleatoria doble g = random.nextgaussian (); // Obtener un valor largo aleatorio Long L = Random.NextLong (); System.out.printf ("/n ---%s ----/nb =%s, d =%s, f =%s, i1 =%s, i2 =%s, g =%s, l =%s, buf = [", título, b, d, f, i1, i2, g, l); para (byte bt: buf) system.out.printf ("%s,", bt); System.out.println ("]"); }}
EG2:
Problema: Genere números aleatorios entre (-10,10) con dos dígitos retenidos después del punto decimal.
Solución:
1. Función de generación de números aleatorios Random R = new Random (); R.Nextfloat (); // Generar números aleatorios de punto flotante entre (0,1). Multiplique el número aleatorio anterior por 10 para obtener un número aleatorio entre (0,10).
2. Genere un número aleatorio de tipo booleano para controlar el número positivo y negativo del número: R.NextBoolean ();
3. El método para retener dos decimales: Math.floor (N*100+0.5)/100; El número obtenido es de doble tipo.
El código es el siguiente:
import java.util.*; public class createrandom {public float numrandom () {float num; Random r = new Random (); Valor de flotación = (float) (Math.floor (R.Nextfloat ()*1000+0.5)/100); Booleano b = r.nextboolean (); if (b) {num = valor; } else {num = 0-value; } return num; } public static void main (string [] args) {Createrandom cr = new Createrandom (); float num = CR.numrandom (); System.out.print (num); }}