Tutorial do método "random" do Java

Escrito por deborah lee soltesz Google | Traduzido por josé fabián
  • Compartilhar
  • Tweetar
  • Compartilhar
  • Pin
  • E-mail
Tutorial do método "random" do Java
Os geradores de números aleatórios são usados para programar jogos com azar

Os números gerados aleatoriamente têm muitos usos nos programas de computador, como por exemplo criar imprevisibilidade em jogos, modelar simulações e realizar encriptação. O Java fornece duas técnicas para gerar números aleatórios. A biblioteca "Math" oferece um método simples, mas conveniente, para gerar valores "floating point" (ponto flutuante) aleatórios entre 0 e 1,0. A classe "Random" oferece funcionalidades para gerar números de forma mais flexível.

Outras pessoas estão lendo

Introdução

Um gerador de números aleatórios é uma rotina desenhada para produzir um valor numérico que pareça ter sido escolhido por azar. Em Java, como em todas as linguagens de programação, os valores gerados por "Math.random()" e a classe "Random" parecem ser aleatórios, mas não o são. Portanto, os números gerados com tais métodos são chamados "pseudoaleatórios".

Propriedades

Os geradores de números pseudoaleatórios possuem duas propriedades básicas: uma distribuição e uma "seed" (Semente).

A "distribuição" se refere à frequência com que cada valor aparece dentro de uma série de números gerados. A maioria dos métodos aleatórios do Java produzem uma distribuição uniforme de números, o que significa que nenhum valor aparecerá com mais frequência do que os outros. A classe "Random" possui um método, "nextGaussian", a qual gera números que seguem uma distribuição gaussiana (também chamada "normal" ou "sino").

A "seed" é um número usado para inicializar um gerador de números pseudoaleatórios. Se a mesma semente for usada duas vezes, o gerador de números repetirá a série de números ao ser chamado usando os mesmos métodos e parámetros. A habilidade de reproduzir um conjunto de números é útil ao depurar, testar e realizar tarefas em cenários onde seja preciso recriar o entorno de execução de um aplicativo.

A função "Math.random()"

O método "Math.random()" é um gerador de números pseudoaleatórios simples. Para usá-lo, é preciso apenas chamar à função "Math.random()". O método retorna um valor "double" entre 0.0 (inclusivo) e 1.0 (exclusivo). Os valores produzidos seguem uma distribuição uniforme. Se forem precisos intervalos, tipos ou distribuições diferentes, o programador deverá fazer um "cast" (Conversão) dos resultados para o tipo desejado e realizar cálculos adicionais para obter o resultado final.

A classe "Random"

A clase "Random" é mais flexível do que "Math.random()", mas é necessário um pouco mais de esforço para ser usada. É construída uma instancia da clase "Random", o construtor toma um inteiro "long" como valor "seed", e se ele não for indicado, será gerado em base à hora atual em milisegundos. A clase "Random" fornece um método para definir a "seed" após a construção. Há varios métodos para gerar números pseudoaleatórios nessa clase, cada uma das quais é prefixada com a palavra "next" (seguinte). A maioria desses métodos retornam valores uniformemente distribuidos em diferentes intervalos e de vários tipos, como por exemplo inteiros, valores "floating point" e booleanos. O método "nextGaussian" retorna valores "double" distribuidos em forma gaussiana. O método "nextInt" pode tomar um parámetro inteiro e usá-lo como limite superior do intervalo.

Considerações

Gerar um conjunto de números imprevisível é às vezes necessário, por exemplo, para evitar que os jogadores de um jogo possam fazer trampas. Os valores pseudoaleatórios retornados pelas instâncias da classe "Random" podem ser combinadas para oferecer uma aleatoriedade adicional. Também pode ser útil implementar uma distribuição não uniforme.

O Java gera números pseudoaleatórios que seguem uma distribuição uniforme ou gaussiana. As distribuições não uniformes são úteis, particularmente em simulações, para imitar cenários que se adaptem a distribuições específicas na vida real. Podem ser obtidas outras distribuições usando a função acumulativa inversa da distribuição desejada. Essa função toma uma probabilidade (um valor entre 0.0 e 1.0) como parámetro. Os resultados não nulos do método "Math.Random()" ou um dos da clase "Random" que retornam um valor de vírgula flutuante podem ser usados para esse parámetro. Busque na seção "Recursos" um link à biblioteca "Math" do Apache, a qual fornece métodos inversos para várias distribuições acumulativas.

Não perca

Filtro:
  • Geral
  • Artigos
  • Slides
  • Vídeos
Mostrar:
  • Mais relevantes
  • Mais lidos
  • Mais recentes

Nenhum artigo disponível

Nenhum slide disponível

Nenhum vídeo disponível