Números aleatórios são amplamente utilizados em programação para simulações de segurança de jogos, etc. Existem várias maneiras de gerar números aleatórios usando métodos e classes integrados em Java. As abordagens mais comumente usadas estão listadas abaixo:
- Classe java.util.Random
- Método Math.random() (retorna valores duplos)
- Classe ThreadLocalRandom (introduzida em Java 7)
Vamos explorar cada uma dessas abordagens, uma por uma, em detalhes
1. Usando java.util.Random
Com a ajuda desta classe podemos gerar números aleatórios de diferentes tipos (int double long boolean etc.).
Métodos principais:
java adicionar a um array
- próximoInt(): Este método gera um número inteiro aleatório (intervalo completo incluindo negativos)
- nextInt (limite int): Este método gera um número inteiro aleatório entre 0 (inclusivo) e vinculado (exclusivo)
- próximoDuplo(): Este método gera um duplo aleatório entre 0,0 (inclusivo) e 1,0 (exclusivo)
- próximoBooleano(): Aleatório verdadeiro ou falso
Exemplo :
Java// Generating random number using java.util.Random; import java.util.Random; public class Geeks{ public static void main(String[] args) { // Creating the instance of Random class Random r= new Random(); // Generate random integers in range 0 to 999 int r1 = r.nextInt(1000); int r2 = r.nextInt(1000); // Printing random integers System.out.println('Random Integers: ' + r1); System.out.println('Random Integers: ' + r2); // Generate random doubles double rd1 = r.nextDouble(); double rd2 = r.nextDouble(); // Printing random doubles System.out.println('Random Doubles: ' + rd1); System.out.println('Random Doubles: ' + rd2); } }
Saída
Random Integers: 39 Random Integers: 190 Random Doubles: 0.4200728082969115 Random Doubles: 0.9327571841228275
Gerando números em um intervalo específico
quadro tkinter
A fórmula para gerar um número aleatório com um intervalo específico está listada abaixo:
Rand aleatório = new Random();
int randomNum = rand.nextInt(max - min + 1) + min;
Observação: min e max são nossos limites inferior e superior de número.
Exemplo:
Java// Generating random number in a specific range import java.io.*; import java.util.*; class Geeks { public static void main (String[] args) { Random r = new Random(); int max=100min=50; System.out.println('Generated numbers are within '+ min +' to '+ max); System.out.println(r.nextInt(max - min + 1) + min); System.out.println(r.nextInt(max - min + 1) + min); System.out.println(r.nextInt(max - min + 1) + min); } }
Saída
Generated numbers are within 50 to 100 55 51 51
2. Usando Math.random()
O Aula de matemática contém vários métodos para realizar várias operações numéricas, como calcular logaritmos de exponenciação, etc. aleatório() este método retorna um valor duplo com sinal positivo maior ou igual a 0,0 e menor que 1,0. Os valores retornados são escolhidos de forma pseudoaleatória. Este método só pode gerar números aleatórios do tipo Doubles.
Exemplo:
comandos linux queJava
// Java program to demonstrate working of // Math.random() to generate random numbers import java.util.*; public class Geeks { public static void main(String args[]) { // Generating random doubles System.out.println('Random doubles: ' + Math.random()); System.out.println('Random doubles: ' + Math.random()); } }
Saída
Random doubles: 0.38601320746656065 Random doubles: 0.9209882942481417
Gerando números em um intervalo específico
Aqui está a fórmula para gerar um número aleatório com intervalo específico, onde mínimo e máximo são nossos limites inferior e superior de número:
comparação de string java
int randomNum = min + (int)(Math.random() * ((máx - min) + 1));
Exemplo:
Java// Demonstrating how to generate random // number within a specific range import java.io.*; import java.util.*; class Geeks { public static void main (String[] args) { int max=100min=50; System.out.println('Generated numbers are within '+min+' to '+max); System.out.println(min + (int)(Math.random() * ((max - min) + 1))); System.out.println(min + (int)(Math.random() * ((max - min) + 1))); System.out.println(min + (int)(Math.random() * ((max - min) + 1))); } }
Saída
Generated numbers are within 50 to 100 82 68 77
3. Usando ThreadLocalRandom
Esta é a forma recomendada em ambientes multithread, pois reduz a contenção.
Métodos principais:
- atual().nextInt(): Inteiro aleatório (intervalo completo)
- atual().nextInt(min máx + 1): Inteiro aleatório no intervalo (adicionei este exemplo limitado)
- atual().nextDouble(): Duplo aleatório (0,0 a 1,0)
- atual().nextBoolean(): Aleatório verdadeiro ou falso
Exemplo:
Java// Demonstrates how to generate random integers // doubles and booleans using ThreadLocalRandom import java.util.concurrent.ThreadLocalRandom; public class Geeks { public static void main(String[] args) { // Generate random integers in range 0 to 999 // Random number between 0 and 999 int r1 = ThreadLocalRandom.current().nextInt(1000); // Random number between 0 and 999 int r2 = ThreadLocalRandom.current().nextInt(1000); // Print random integers System.out.println('Random Integers: ' + r1); System.out.println('Random Integers: ' + r2); // Generate Random doubles between 0.0 (inclusive) // and 1.0 (exclusive) double rd1 = ThreadLocalRandom.current().nextDouble(); double rd2 = ThreadLocalRandom.current().nextDouble(); // Print random doubles System.out.println('Random Doubles: ' + rd1); System.out.println('Random Doubles: ' + rd2); // Generate random booleans boolean rb1 = ThreadLocalRandom.current().nextBoolean(); boolean rb2 = ThreadLocalRandom.current().nextBoolean(); // Print random Booleans System.out.println('Random Booleans: ' + rb1); System.out.println('Random Booleans: ' + rb2); } }
Saída
Random Integers: 812 Random Integers: 461 Random Doubles: 0.7420865203902993 Random Doubles: 0.9580683365617423 Random Booleans: false Random Booleans: false