Gere valores duplos aleatórios entre 0 e 1 em Java
-
Gere valores duplos aleatórios entre 0 e 1 usando
Math.random()
em Java -
Gere valores duplos aleatórios entre 0 e 1 usando
Random().nextDouble()
em Java -
Gere valores duplos aleatórios entre 0 e 1 usando
ThreadLocalRandom.current().nextDouble()
em Java
Este artigo irá apresentar três métodos para gerar valores aleatórios entre 0 e 1 do tipo primitivo double
. Para provar a aleatoriedade dos valores gerados, usaremos um loop para gerar dez valores de tipo duplo aleatórios entre 0 e 1.
Gere valores duplos aleatórios entre 0 e 1 usando Math.random()
em Java
A classe Math
pode ser usada para realizar várias operações matemáticas. Podemos usar essa classe para gerar números aleatórios também. Math.random()
é a função estática que retorna números aleatórios entre 0 e 1. Aqui, 0 inclui os valores gerados, enquanto 1 é sempre exclusivo.
No exemplo a seguir, usamos Math.random()
para gerar valores aleatórios do tipo double
. Na saída, podemos ver que os valores são todos aleatórios.
public class RandomDouble {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
double randomDbl = Math.random();
System.out.println(randomDbl);
}
}
}
Resultado:
0.9537872648347154
0.2863804438195172
0.5815339629441948
0.7734677312115609
0.021051510563543485
0.9064133490694901
0.6833468691871607
0.30655711217738246
0.2730784326888416
0.6804778782692341
Gere valores duplos aleatórios entre 0 e 1 usando Random().nextDouble()
em Java
Outro método que pode gerar números aleatórios entre 0 e 1 é nextDouble()
, uma parte da classe java.util.Random
. Quando chamamos nextDouble()
com o objeto da classe Random
, ele retorna um valor aleatório entre 0 e 1, assim como vimos no exemplo anterior.
Diz-se que este método é mais eficiente do que Math.random()
.
import java.util.Random;
public class RandomDouble {
public static void main(String[] args) {
Random randomObj = new Random();
for (int i = 0; i < 10; i++) {
double randomDbl = randomObj.nextDouble();
System.out.println(randomDbl);
}
}
}
Resultado:
0.240017494934622
0.08331956619499614
0.4359524465181911
0.5291811081068774
0.38193057731688373
0.6969527822622924
0.5436002348156281
0.32176862575520415
0.07327708002828293
0.9005635171231344
Gere valores duplos aleatórios entre 0 e 1 usando ThreadLocalRandom.current().nextDouble()
em Java
As duas técnicas que vimos neste tutorial não são eficientes para sistemas multithread e podem resultar em baixo desempenho. Isso acontece porque quando geramos números aleatórios usando a classe Random
todos os threads compartilham a mesma instância, o que significa que quando uma mudança ocorre em um thread, todos os outros threads também são executados.
Para resolver esse problema, o Java introduziu ThreadLocalRandom
na atualização do JDK 7. É uma classe que roda apenas no encadeamento atual, resultando em melhor desempenho em um ambiente com vários encadeamentos.
No exemplo abaixo, chamamos nextDouble()
que gera valores aleatórios duplos com ThreadLocalRandom.current()
e retorna um valor duplo gerado aleatoriamente entre 0 e 1.
import java.util.concurrent.ThreadLocalRandom;
public class RandomDouble {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
double randomDbl = ThreadLocalRandom.current().nextDouble();
System.out.println(randomDbl);
}
}
}
Resultado:
0.9717084711770174
0.8977374014983726
0.2744375247405819
0.2866498720386894
0.6118970047667582
0.7441044456568308
0.21043457873690274
0.08985457420563114
0.86748682220748
0.18952106607144148
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn