1. Como gerar números aleatórios em java
1. Use Math.Random () em J2Se para fazer o sistema selecionar aleatoriamente um tipo decimal duplo entre 0 e 1, multiplique -o por um número, como 25, e você pode obter um número aleatório na faixa de 0 e 25. Isso não está disponível no J2me;
int randomNumber = (int) math.round (math.random ()*(max-min)+min);
2. Existe um método currentTimEmillis () na classe do sistema. Este método retorna um longo número de milissegundos a partir das 0:00 de 1º de janeiro de 1970 para o atual. Ele pode ser usado como um número aleatório e também pode ser modulado para certos números, o que pode limitar o intervalo de números aleatórios. Quando esse método gera vários números aleatórios ao mesmo tempo em um loop, será o mesmo valor, que possui certas limitações!
Long RandomNum = System.CurrentTimemillis (); int randomNumber = (int) RandomNum%(max-min)+min;
3. Use a classe Java.util.Random para gerar um gerador de números aleatórios, que também é um método que costumamos usar para obter números aleatórios nos programas J2Me. Possui duas formas de construtores, ou seja, aleatório () e aleatório (semente longa). Random () usa o tempo atual, System.CurrentTimemillis (), como a semente do gerador e aleatória (semente longa) usa a semente especificada como semente do gerador. Depois que o objeto gerador de números aleatórios (aleatório) é gerado, diferentes tipos de números aleatórios são obtidos chamando diferentes métodos: NextInt (), NextLong (), NextFloat (), NextDouble () etc. Se dois objetos aleatórios usarem a mesma semente (por exemplo, ambos são 25) e chamam a mesma função na mesma ordem, eles retornam exatamente o valor.
Aleatório aleatório = novo aleatório (); int randomNumber = random.nextint (max)%(max-min + 1) + min;
2. N números não repetitivos dentro de um intervalo aleatório
1. Método 1: o mais simples e fácil de entender dois ciclos para remover peso pesado
/ *** Especifique aleatoriamente n números não repetitivos no intervalo* O método mais simples e mais básico* @param min Especifique a faixa mínima* @param max Especifique a faixa máxima* @param n número de números aleatórios*/ public static int [] RandomCommon (int min, int max, int n) {se (n> (max - min 1). } int [] resultado = new int [n]; int conting = 0; while (count <n) {int num = (int) (math.random () * (max - min)) + min; bandeira booleana = true; for (int j = 0; j <n; j ++) {if (num == resultado [j]) {flag = false; quebrar; }} if (flag) {resultado [count] = num; contagem ++; }} Retornar resultado; } 2. Método 2: Usando os recursos do hashset, apenas valores diferentes podem ser armazenados
/ *** Especifique aleatoriamente n números não repetitivos no intervalo* usando o recurso de hashset, apenas valores diferentes podem ser armazenados* @param min Especifique o valor mínimo do intervalo* @param max especificar o valor máximo do intervalo* @param n Número aleatório* @param hashSet <Integer> definido Randomet Result*/ public STATs Void (n> (max - min + 1) || max <min) {return; } para (int i = 0; i <n; i ++) {// Chame o Math.random () Método int num = (int) (Math.random () * (max - min)+min; set.add (num); // salve diferentes números no hashset} int setSize = set.size (); // Se o número armazenado for menor que o número especificado, gera recursivamente o número aleatório do número restante e o loop para que o tamanho especificado seja atingido se (SetSize <n) {RandomSet (min, max, n - SetSize, Set); // Recurrive}} 3. Método 3: excluir números chegou aleatoriamente
/*** Especifique aleatoriamente n números não repetitivos no intervalo* na matriz não repetitiva inicializada, um número é gerado aleatoriamente e colocado no resultado. * Substitua o número que é enviado aleatoriamente à matriz a ser selecionada pelo número correspondente ao subscrito da matriz a ser selecionado (LEN-1)* então gera aleatoriamente o próximo número aleatório de len-2 e assim por diante* @param maxt stuen rangun o valor máximo* @param min especificar o número mínimo de alcance* @param n número aleatório* Randurn* Retorn* @param min Min Result Walge max, int n) {int len = max-min+1; if (max <min || n> len) {return null; } // inicialize a matriz a ser selecionada para um determinado intervalo int [] fonte = new int [len]; for (int i = min; i <min+len; i ++) {fonte [i-min] = i; } int [] resultado = new int [n]; RD RD = novo aleatório (); int index = 0; for (int i = 0; i <resultado.Length; i ++) {// Array a ser selecionado 0 para (len-2) índice aleatório = math.abs (rd.nextint () % len--); // coloque o número aleatório no resultado do resultado do resultado [i] = fonte [index]; // Substitua o número recebido aleatoriamente na matriz a ser selecionado com o número correspondente ao subscrito da matriz a ser selecionado (LEN-1) pelo número correspondente ao subscrito da matriz a ser selecionado (LEN-1). fonte [índice] = fonte [len]; } resultado de retorno; } Instância de chamadas:
public static void main (string [] args) {int [] resultado1 = aleatomcommon (20,50,10); for (int i: resultado1) {System.out.println (i); } int [] resultado2 = RandomArray (20,50,10); for (int i: resultado2) {System.out.println (i); } Hashset <Teger> set = new HashSet <Teger> (); RandomSet (20,50,10, conjunto); for (int j: set) {System.out.println (j); }}3. Código de amostra
package test;import java.util.HashSet;import java.util.Random;public class Snippet { /** * Randomly specify N non-repetition numbers in the range* In the initialized unrepetitioned array, randomly generate a number and put it into the result, * Replace the number that is randomly sent to the array to be randomly sent by the number corresponding to the subscript of the array to be selected (len-1)* Em seguida, gerar aleatoriamente o próximo número aleatório do LEN-2, e assim por diante* @param max Especifique o alcance máximo* @param min Especifique a faixa mínima* @param n número de números aleatórios* @return int [] conjunto de resultados aleatórios*/ public static int [] randomarray (int min, int max, int n) {int len = max-min 1; if (max <min || n> len) {return null; } // inicialize a matriz a ser selecionada para um determinado intervalo int [] fonte = new int [len]; for (int i = min; i <min+len; i ++) {fonte [i-min] = i; } int [] resultado = new int [n]; RD RD = novo aleatório (); int index = 0; for (int i = 0; i <resultado.Length; i ++) {// Array a ser selecionado 0 para (len-2) um subscrito aleatório int s = rd.nextint ()%len; // system.out.print (s-- +","); index = math.abs (rd.nextInt ()%len-); // system.out.println (index); // Coloque o número recebeu aleatoriamente no resultado do resultado do resultado [i] = fonte [index]; // Substitua o número recebido aleatoriamente na matriz a ser selecionado com o número correspondente do subscrito da matriz a ser selecionada (len-1) fonte [index] = fonte [len]; } resultado de retorno; } public static void main (string [] args) {// int [] resultado1 = aleatomcommon (20,50,10); // for (int i: resultado1) {// System.out.println (i); //} int [] resultado2 = randomarray (0,4,5); for (int i: resultado2) {System.out.print (i); } // HashSet <Teger> set = new Hashset <Teger> (); // RandomSet (20,50,10, set); // para (int j: set) {// System.out.println (j); //}}}O exposto acima é tudo sobre este artigo, espero que seja útil para todos aprenderem a programação Java.