1. Cómo generar números aleatorios en Java
1. Use Math.random () en J2SE para hacer que el sistema seleccione aleatoriamente un decimal de doble tipo entre 0 y 1, multiplíquelo por un número, como 25, y puede obtener un número aleatorio en el rango de 0 y 25. Esto no está disponible en J2ME;
int randomNumber = (int) Math.round (math.random ()*(max-min)+min);
2. Hay un método CurrentTimemillis () en la clase del sistema. Este método devuelve un largo número de milisegundos a partir de las 0:00 el 1 de enero de 1970 al actual. Se puede usar como un número aleatorio, y también se puede modular a ciertos números, lo que puede limitar el rango de números aleatorios. Cuando este método genera múltiples números aleatorios al mismo tiempo en un bucle, ¡será el mismo valor, que tiene ciertas limitaciones!
long randomNum = System.CurrentTimemillis (); int randomNumber = (int) randomNum%(max-min)+min;
3. Use la clase Java.util.Random para generar un generador de números aleatorios, que también es un método que a menudo usamos para obtener números aleatorios en los programas J2ME. Tiene dos formas de constructores, a saber, aleatorio () y aleatorio (semilla larga). Random () usa la hora actual, System.CurrentTimemillis (), como la semilla del generador, y al azar (semilla larga) usa la semilla especificada como la semilla del generador. Después de generar el objeto de generador de números aleatorios (aleatorio), se obtienen diferentes tipos de números aleatorios llamando a diferentes métodos: nextInt (), nextLong (), nextFloat (), nextDouble (), etc. Si dos objetos aleatorios usan la misma semilla (por ejemplo, ambos son 25) y llaman la misma función en el mismo orden, regresan exactamente el mismo valor.
Aleatorio aleatorio = new Random (); int randomNumber = random.nextInt (max)%(max-min + 1) + min;
2. N números no repetitivos dentro de un rango aleatorio dado
1. Método 1: Los dos ciclos más simples y fáciles de entender para eliminar el peso pesado
/ *** Especifique aleatoriamente n números no repetitivos en el rango* El método más simple y más básico* @param min especifica el rango mínimo* @param max Especifique el rango máximo* @param n número de números aleatorios*/ public static int [] randomCommon (int min, int max, int n) {if (n> (max - min + 1) || max <min) } int [] resultado = nuevo int [n]; int count = 0; while (count <n) {int num = (int) (math.random () * (max - min)) + min; bandera booleana = verdadero; for (int j = 0; j <n; j ++) {if (num == resultado [j]) {flag = false; romper; }} if (flag) {resultado [count] = num; contar ++; }} Resultado de retorno; } 2. Método 2: Usando las características de hashset, solo se pueden almacenar valores diferentes
/ *** Especificar aleatoriamente n números no repetitivos en el rango* Usando la función Hashset, solo se pueden almacenar valores diferentes* @param min especifique el valor mínimo del rango* @param max especificar el valor máximo del rango* @param n número aleatorio* @param hashset <integer> establecer el resultado aleatorio*/ public estatic void aleatorset (int min, int max, int n, hashset <integer> establecer el número aleatorio de conjunto*/ public void Void aleatorset (int min, int max, int n, hashset <integer> establecer el resultado aleatorio) if (n> (max - min + 1) || max <min) {return; } for (int i = 0; i <n; i ++) {// llame al método math.random () int num = (int) (math.random () * (max - min))+min; set.add (num); // Guardar diferentes números en hashset} int setSize = set.size (); // Si el número almacenado es menor que el número especificado, entonces genera recursivamente el número aleatorio del número restante y el bucle para que el tamaño especificado se alcance si (setSize <n) {aleatorSet (min, max, n - setsize, set); // recursivo}} 3. Método 3: excluir números llegados al azar
/*** Especifique aleatoriamente n números no repetitivos en el rango* En la matriz no representativa inicializada, un número se genera aleatoriamente y se coloca en el resultado. * Reemplace el número que se envía aleatoriamente a la matriz que se seleccionará por el número correspondiente al subíndice de la matriz que se seleccionará (len-1)* luego genere aleatoriamente el siguiente número aleatorio de LEN-2, y así en* @param max especifique el valor máximo de rango* @param Min especifica el valor de rango mínimo* @param n número de números aleatorios* @return int [] Resultado de número aleatorio*/ público static static int [], intento, intento, intento, intento, intento, intento, intento, intento, intento, intento, intermedio. max, int n) {int len = max-min+1; if (max <min || n> len) {return null; } // Inicializar la matriz que se seleccionará para un rango dado int [] fuente = new int [len]; para (int i = min; i <min+len; i ++) {fuente [i-min] = i; } int [] resultado = nuevo int [n]; RD aleatorio = new Random (); int index = 0; for (int i = 0; i <result.length; i ++) {// matriz para ser seleccionado 0 a (len-2) índice aleatorio = math.abs (rd.nextInt () % len--); // Ponga el número aleatorio en el resultado del conjunto de resultados [i] = fuente [index]; // Reemplace el número recibido aleatoriamente en la matriz que se seleccionará con el número correspondiente al subíndice de la matriz a seleccionar (LEN-1) con el número correspondiente al subíndice de la matriz a seleccionar (LEN-1). fuente [índice] = fuente [len]; } resultado de retorno; } Instancia de llamadas:
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> (); aleatorset (20,50,10, establecido); for (int j: set) {system.out.println (j); }}3. Código de muestra
prueba de paquete; import java.util.hashset; import java.util.random; public class fnippet { /*** Especifique aleatoriamente n Números de no repetición en el rango* en la matriz no repetida inicializada, genere aleatoriamente un número y coloque en el resultado,* reemplazar el número que se envía aleatoriamente a la matriz para que se envíe aleatoriamente por el número correspondiente a la subscrit del subscrit de la subsecisión de la subscript de la subscript de la subsecisión (se selecciona (reemplaza el número (se selecciona al azar al que se envíe aleatoriamente a la matriz para que se envíe aleatoriamente por el número que corresponde a la subscrit del subscrit de la subscrit de la subsecisión) que se selecciona (se selecciona el número (se selecciona el número aleatoriamente. Luego, genere aleatoriamente el siguiente número aleatorio de LEN-2, y así en* @param max especifique el rango máximo* @param min especifique el rango mínimo* @param n número de números aleatorios* @return int [] resultado de número aleatorio establecido*/ public static int [] randomArray (int min, int max, int n) {int len = max-min+1; if (max <min || n> len) {return null; } // Inicializar la matriz que se seleccionará para un rango dado int [] fuente = new int [len]; para (int i = min; i <min+len; i ++) {fuente [i-min] = i; } int [] resultado = nuevo int [n]; RD aleatorio = new Random (); int index = 0; for (int i = 0; i <result.length; i ++) {// matriz para ser seleccionado 0 a (len-2) un subíndice aleatorio int s = rd.nextInt ()%len; // system.out.print (s-- +","); index = Math.abs (rd.nextint ()%len-); // system.out.println (index); // Ponga el número recibido aleatoriamente en el resultado del conjunto de resultados [i] = fuente [index]; // Reemplazar el número recibido aleatoriamente en la matriz que se seleccionará con el número correspondiente del subíndice de la matriz que se seleccionará (LEN-1) Fuente [índice] = fuente [len]; } resultado de retorno; } 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> (); // aleatorSet (20,50,10, set); // for (int j: set) {// system.out.println (j); //}}}Lo anterior se trata de este artículo, espero que sea útil para todos aprender la programación de Java.