Classe Random #3

Tempo de leitura: 14 min

Escrito por Michel Adriano Medeiros
em 31/05/2020

longs​(long randomNumberOrigin, long randomNumberBound)

longs​(long randomNumberOrigin, long randomNumberBound) – Retorna um fluxo efetivamente ilimitado de valores longos pseudo-aleatórios, cada um em conformidade com a origem especificada (inclusive) e vinculado (exclusivo).

public LongStream longs​(long randomNumberOrigin, long randomNumberBound) – Retorna um fluxo efetivamente ilimitado de valores longos pseudo-aleatórios, cada um em conformidade com a origem especificada (inclusive) e vinculado (exclusivo).
Um valor longo pseudoaleatório é gerado como se fosse o resultado da chamada do seguinte método com a origem e o limite:

Nota de implementação:

Este método é implementado para ser equivalente a longs (Long.MAX_VALUE, randomNumberOrigin, randomNumberBound).

Parâmetros:

randomNumberOrigin – a origem (inclusive) de cada valor aleatório
randomNumberBound – o limite (exclusivo) de cada valor aleatório

Retornos:

um fluxo de valores longos pseudo-aleatórios, cada um com a origem especificada (inclusive) e vinculado (exclusivo)

Lançamentos:

IllegalArgumentException – se randomNumberOrigin for maior ou igual a randomNumberBound

Esse método existe desde a versão 1.8.

Fonte do código: https://www.javatpoint.com/java-threadlocalrandom-longs-method

  1. import java.util.concurrent.ThreadLocalRandom;  
  2.   
  3. public class ThreadLocalRandomLongsExample2 {  
  4.     public static void main(String[] args) {  
  5.           
  6.         // Returns a stream of pseudorandom long values       
  7.         System.out.println(“stream of pseudorandom long value is: ” +ThreadLocalRandom.current().longs(20, 30));  
  8.     }  
  9. }  

longs​(long streamSize, long randomNumberOrigin, long randomNumberBound)

longs​(long streamSize, long randomNumberOrigin, long randomNumberBound) – Retorna um fluxo que produz o número streamSize especificado de comprimento pseudo-aleatório, cada um em conformidade com a origem especificada (inclusive) e vinculado (exclusivo).

public LongStream longs​(long streamSize, long randomNumberOrigin, long randomNumberBound) – Retorna um fluxo que produz o número streamSize especificado de comprimento pseudo-aleatório, cada um em conformidade com a origem especificada (inclusive) e vinculado (exclusivo).
Um valor longo pseudoaleatório é gerado como se fosse o resultado da chamada do seguinte método com a origem e o limite:

Parâmetros:

streamSize – o número de valores a serem gerados
randomNumberOrigin – a origem (inclusive) de cada valor aleatório
randomNumberBound – o limite (exclusivo) de cada valor aleatório

Retornos:

um fluxo de valores longos pseudo-aleatórios, cada um com a origem especificada (inclusive) e vinculado (exclusivo)

Lançamentos:

IllegalArgumentException – se streamSize for menor que zero ou randomNumberOrigin for maior ou igual a randomNumberBound

Esse método existe desde a versão 1.8.

Fonte do código: https://www.javatpoint.com/java-threadlocalrandom-longs-method

  1. import java.util.concurrent.ThreadLocalRandom;    
  2.     
  3. public class ThreadLocalRandomLongsExample6 {    
  4.     public static void main(String[] args) {    
  5.             
  6.         // Returns a stream of pseudorandom long values           
  7.         System.out.println(“stream of pseudorandom long value is: ” +ThreadLocalRandom.current().longs(10, 20, 30));    
  8.     }    
  9. }   

next​(int bits)

next​(int bits) – Gera o próximo número pseudo-aleatório.

protected int next​(int bits) – Gera o próximo número pseudo-aleatório. As subclasses devem substituir isso, pois isso é usado por todos os outros métodos.
O contrato geral de next é que ele retorne um valor int e se os bits do argumento estiverem entre 1 e 32 (inclusive), muitos bits de ordem inferior do valor retornado serão (aproximadamente) valores de bits escolhidos independentemente, cada um dos quais é (aproximadamente) igualmente provável que seja 0 ou 1. O método a seguir é implementado pela classe Random, atualizando atomicamente a semente para

e retorna

Este é um gerador linear de números pseudo-aleatórios congruentes, conforme definido por D. H. Lehmer e descrito por Donald E. Knuth em A Arte da Programação por Computador, Volume 2: Algoritmos Seminuméricos, seção 3.2.1.

Parâmetros:

bits – bits aleatórios

Retornos:

o próximo valor pseudo-aleatório dessa sequência geradora de número aleatório

Esse método existe desde a versão 1.1.

nextBoolean()

nextBoolean() – Retorna o próximo valor booleano pseudo-aleatório e uniformemente distribuído da sequência desse gerador de números aleatórios.

public boolean nextBoolean() – Retorna o próximo valor booleano pseudo-aleatório e uniformemente distribuído da sequência desse gerador de números aleatórios. O contrato geral do nextBoolean é que um valor booleano é gerado e retornado pseudo-aleatoriamente. Os valores verdadeiro e falso são produzidos com (aproximadamente) igual probabilidade.

O método nextBoolean é implementado pela classe Random como se por:

Retornos:

o próximo valor booleano pseudo-aleatório e uniformemente distribuído da sequência desse gerador de números aleatórios

Esse método existe desde a versão 1.2.

Fonte do código: https://www.tutorialspoint.com/java/util/random_nextboolean.htm

nextBytes​(byte[] bytes)

nextBytes​(byte[] bytes) – Gera bytes aleatórios e os coloca em uma matriz de bytes fornecida pelo usuário.

public void nextBytes​(byte[] bytes) – Gera bytes aleatórios e os coloca em uma matriz de bytes fornecida pelo usuário. O número de bytes aleatórios produzidos é igual ao comprimento da matriz de bytes.
O método nextBytes é implementado pela classe Random como se por:

Parâmetros:

bytes – a matriz de bytes a ser preenchida com bytes aleatórios

Lançamentos:

NullPointerException – se a matriz de bytes for nula

Esse método existe desde a versão 1.1.

Fonte do código: https://www.tutorialspoint.com/java/util/random_nextbytes.htm

nextDouble()

nextDouble() – Retorna o próximo valor duplo pseudoaleatório, distribuído uniformemente entre 0,0 e 1,0 a partir desta sequência do gerador de números aleatórios.

public double nextDouble() – Retorna o próximo valor duplo pseudoaleatório, distribuído uniformemente entre 0,0 e 1,0 a partir desta sequência do gerador de números aleatórios.
O contrato geral de nextDouble é que um valor duplo, escolhido (aproximadamente) uniformemente do intervalo 0,0d (inclusive) a 1,0d (exclusivo), seja gerado e retornado pseudo-aleatoriamente.

O método nextDouble é implementado pela classe Random como se por:

O hedge “aproximadamente” é usado na descrição anterior apenas porque o próximo método é apenas aproximadamente uma fonte imparcial de bits escolhidos independentemente. Se fosse uma fonte perfeita de bits escolhidos aleatoriamente, o algoritmo mostrado escolheria valores duplos no intervalo declarado com perfeita uniformidade.

[Nas versões anteriores do Java, o resultado era calculado incorretamente como:

Isso pode parecer equivalente, se não melhor, mas, na verdade, introduziu uma grande não uniformidade devido ao viés no arredondamento dos números de ponto flutuante: era três vezes mais provável que o bit de ordem inferior do significando fosse 0. do que isso seria 1! Essa não uniformidade provavelmente não importa muito na prática, mas buscamos a perfeição.]

Retornos:

o próximo pseudoaleatório, valor duplo uniformemente distribuído entre 0,0 e 1,0 da sequência desse gerador de números aleatórios

Veja também:

Math.random()

Fonte do código: https://www.geeksforgeeks.org/random-nextdouble-method-in-java-with-examples/

nextFloat()

nextFloat() – Retorna o próximo valor flutuante pseudo-aleatório e uniformemente distribuído entre 0,0 e 1,0 a partir desta sequência do gerador de números aleatórios.

public float nextFloat() – Retorna o próximo valor flutuante pseudo-aleatório e uniformemente distribuído entre 0,0 e 1,0 a partir desta sequência do gerador de números aleatórios.

O contrato geral do nextFloat é que um valor flutuante, escolhido (aproximadamente) uniformemente do intervalo 0,0f (inclusive) a 1,0f (exclusivo), seja gerado e retornado pseudo-aleatoriamente. Todos os 224  valores possíveis de flutuação da forma m x 224 , em que m é um número inteiro positivo menor que 224 , são produzidos com (aproximadamente) probabilidade igual.

O método nextFloat é implementado pela classe Random como se por:

O hedge “aproximadamente” é usado na descrição anterior apenas porque o próximo método é apenas aproximadamente uma fonte imparcial de bits escolhidos independentemente. Se fosse uma fonte perfeita de bits escolhidos aleatoriamente, o algoritmo mostrado escolheria valores flutuantes no intervalo declarado com perfeita uniformidade.

[Nas versões anteriores do Java, o resultado era calculado incorretamente como:

Isso pode parecer equivalente, se não melhor, mas, de fato, introduziu uma leve não uniformidade por causa do viés no arredondamento dos números de ponto flutuante: era um pouco mais provável que o bit de ordem inferior do significando fosse 0 do que que seria 1.]

Retornos:

o próximo pseudoaleatório, valor flutuante uniformemente distribuído entre 0,0 e 1,0 da sequência desse gerador de números aleatórios

Fonte do código: https://www.tutorialspoint.com/java/util/random_nextfloat.htm

nextGaussian()

nextGaussian() – Retorna o próximo pseudoaleatório Gaussiano (“normalmente”) distribuído com valor duplo com média 0,0 e desvio padrão 1,0 a partir desta sequência do gerador de números aleatórios.

public double nextGaussian() – Retorna o próximo pseudoaleatório Gaussiano (“normalmente”) distribuído com valor duplo com média 0,0 e desvio padrão 1,0 a partir desta sequência do gerador de números aleatórios.
O contrato geral do nextGaussian é que um valor duplo, escolhido (aproximadamente) a distribuição normal usual com média 0,0 e desvio padrão 1,0, seja gerado e retornado pseudo-aleatoriamente.

O método nextGaussian é implementado pela classe Random como se fosse uma versão threadsafe do seguinte:

Isso usa o método polar de GEP Box, ME Muller e G. Marsaglia, conforme descrito por Donald E. Knuth em A Arte da Programação por Computador, Volume 2: Algoritmos Seminuméricos, seção 3.4.1, subseção C, algoritmo P. Observe que ele gera dois valores independentes ao custo de apenas uma chamada para StrictMath.log e uma chamada para StrictMath.sqrt.

Retornos:

No próximo pseudo-aleatório, Gaussiano (“normalmente”) distribuiu valor duplo com média 0,0 e desvio padrão 1,0 da sequência desse gerador de números aleatórios

Fonte do código: https://www.tutorialspoint.com/java/util/random_nextgaussian.htm

nextInt()

nextInt() – Retorna o próximo valor int de pseudoaleatório, distribuído uniformemente, a partir dessa sequência do gerador de números aleatórios.

public int nextInt() – Retorna o próximo valor int de pseudoaleatório, distribuído uniformemente, a partir dessa sequência do gerador de números aleatórios. O contrato geral de nextInt é que um valor int seja gerado e retornado pseudo-aleatoriamente. Todos os 232 possíveis valores int são produzidos com (aproximadamente) igual probabilidade.
O método nextInt é implementado pela classe Random como se:

Retornos:

o próximo pseudoaleatório, valor int uniformemente distribuído da sequência desse gerador de números aleatórios

Fonte do código: https://www.geeksforgeeks.org/java-util-random-nextint-java/

nextInt​(int bound)

nextInt​(int bound) -Retorna um valor int pseudoaleatório, distribuído uniformemente entre 0 (inclusive) e o valor especificado (exclusivo), extraído dessa sequência do gerador de números aleatórios.

public int nextInt​(int bound) – Retorna um valor int pseudoaleatório, distribuído uniformemente entre 0 (inclusive) e o valor especificado (exclusivo), extraído dessa sequência do gerador de números aleatórios. O contrato geral de nextInt é que um valor int no intervalo especificado seja gerado e retornado pseudo-aleatoriamente. Todos os valores int possíveis vinculados são produzidos com (aproximadamente) probabilidade igual. O método nextInt (int bound) é implementado pela classe Random como se por:

O hedge “aproximadamente” é usado na descrição anterior apenas porque o próximo método é apenas aproximadamente uma fonte imparcial de bits escolhidos independentemente. Se fosse uma fonte perfeita de bits escolhidos aleatoriamente, o algoritmo mostrado escolheria valores int do intervalo declarado com perfeita uniformidade.

O algoritmo é um pouco complicado. Ele rejeita valores que resultariam em uma distribuição desigual (devido ao fato de 2 ^ 31 não ser divisível por n). A probabilidade de um valor ser rejeitado depende de n. O pior caso é n = 2 ^ 30 + 1, para o qual a probabilidade de uma rejeição é 1/2 e o número esperado de iterações antes do loop terminar é 2.

590/5000O algoritmo trata o caso em que n é uma potência de dois especialmente: retorna o número correto de bits de alta ordem do gerador de números pseudo-aleatórios subjacentes. Na ausência de tratamento especial, o número correto de bits de baixa ordem seria retornado. Sabe-se que geradores de números pseudo-aleatórios lineares congruentes, como o implementado por esta classe, têm períodos curtos na sequência de valores de seus bits de ordem inferior. Portanto, esse caso especial aumenta muito o comprimento da sequência de valores retornados por chamadas sucessivas para esse método se n for uma pequena potência de dois.

Parâmetros:

bound – o limite superior (exclusivo). Deve ser positivo.

Retornos:

o próximo pseudoaleatório, valor int uniformemente distribuído entre zero (inclusive) e vinculado (exclusivo) a partir desta sequência do gerador de números aleatórios

Lançamentos:

IllegalArgumentException – se o limite não for positivo

Esse método existe desde a versão 1.2.

Fonte do código: https://mkyong.com/java/java-generate-random-integers-in-a-range/

nextLong()

nextLong() – Retorna o próximo valor longo pseudoaleatório, uniformemente distribuído, a partir da sequência desse gerador de números aleatórios.

public long nextLong() – Retorna o próximo valor longo pseudoaleatório, uniformemente distribuído, a partir da sequência desse gerador de números aleatórios. O contrato geral de nextLong é que um valor longo é gerado e retornado pseudo-aleatoriamente.
O método nextLong é implementado pela classe Random como se por:

Como a classe Random usa uma semente com apenas 48 bits, esse algoritmo não retornará todos os valores longos possíveis.

Retornos:

o próximo valor longo pseudo-aleatório e uniformemente distribuído a partir da sequência desse gerador de números aleatórios

Fonte do código: https://www.tutorialspoint.com/java/util/random_nextlong.htm

setSeed​(long seed)

setSeed​(long seed) – Define a semente deste gerador de números aleatórios usando uma única semente longa.

public void setSeed​(long seed) – Define a semente deste gerador de números aleatórios usando uma única semente longa. O contrato geral de setSeed é que ele altera o estado desse objeto gerador de números aleatórios, de modo a estar exatamente no mesmo estado como se tivesse acabado de ser criado com o argumento seed como um seed. O método setSeed é implementado pela classe Random, atualizando atomicamente a semente para

e limpando o sinalizador haveNextNextGaussian usado por nextGaussian().

A implementação de setSeed pela classe Random passa a usar apenas 48 bits da semente especificada. Em geral, no entanto, um método de substituição pode usar todos os 64 bits do argumento longo como um valor inicial.

Parâmetros:

semente – a semente inicial

Fonte do código: https://www.tutorialspoint.com/java/util/timezone_setseed.htm

Fonte: https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/util/Random.html

Você vai gostar também:

Para enviar seu comentário, preencha os campos abaixo:

Deixe um comentário


*


*


Seja o primeiro a comentar!

Damos valor à sua privacidade

Nós e os nossos parceiros armazenamos ou acedemos a informações dos dispositivos, tais como cookies, e processamos dados pessoais, tais como identificadores exclusivos e informações padrão enviadas pelos dispositivos, para as finalidades descritas abaixo. Poderá clicar para consentir o processamento por nossa parte e pela parte dos nossos parceiros para tais finalidades. Em alternativa, poderá clicar para recusar o consentimento, ou aceder a informações mais pormenorizadas e alterar as suas preferências antes de dar consentimento. As suas preferências serão aplicadas apenas a este website.

Cookies estritamente necessários

Estes cookies são necessários para que o website funcione e não podem ser desligados nos nossos sistemas. Normalmente, eles só são configurados em resposta a ações levadas a cabo por si e que correspondem a uma solicitação de serviços, tais como definir as suas preferências de privacidade, iniciar sessão ou preencher formulários. Pode configurar o seu navegador para bloquear ou alertá-lo(a) sobre esses cookies, mas algumas partes do website não funcionarão. Estes cookies não armazenam qualquer informação pessoal identificável.

Cookies de desempenho

Estes cookies permitem-nos contar visitas e fontes de tráfego, para que possamos medir e melhorar o desempenho do nosso website. Eles ajudam-nos a saber quais são as páginas mais e menos populares e a ver como os visitantes se movimentam pelo website. Todas as informações recolhidas por estes cookies são agregadas e, por conseguinte, anónimas. Se não permitir estes cookies, não saberemos quando visitou o nosso site.

Cookies de funcionalidade

Estes cookies permitem que o site forneça uma funcionalidade e personalização melhoradas. Podem ser estabelecidos por nós ou por fornecedores externos cujos serviços adicionámos às nossas páginas. Se não permitir estes cookies algumas destas funcionalidades, ou mesmo todas, podem não atuar corretamente.

Cookies de publicidade

Estes cookies podem ser estabelecidos através do nosso site pelos nossos parceiros de publicidade. Podem ser usados por essas empresas para construir um perfil sobre os seus interesses e mostrar-lhe anúncios relevantes em outros websites. Eles não armazenam diretamente informações pessoais, mas são baseados na identificação exclusiva do seu navegador e dispositivo de internet. Se não permitir estes cookies, terá menos publicidade direcionada.

Visite as nossas páginas de Políticas de privacidade e Termos e condições.

Importante: Este site faz uso de cookies que podem conter informações de rastreamento sobre os visitantes.
Criado por WP RGPD Pro