Gerando uma série de Números aleatórios é uma daquelas tarefas comuns que surgem de tempos em tempos. Dentro Java, isso pode ser alcançado simplesmente usando o java.util. Classe aleatória.
A primeira etapa, como no uso de qualquer API classe, é colocar a instrução de importação antes do início da sua classe de programa:
Em seguida, crie um objeto aleatório:
O objeto Random fornece um simples gerador de números aleatórios. Os métodos do objeto permitem escolher números aleatórios. Por exemplo, os métodos nextInt () e nextLong () retornarão um número que está dentro do intervalo de valores (negativo e positivo) dos tipos de dados int e long, respectivamente:
Os números retornados serão escolhidos aleatoriamente int e valores longos:
Escolher números aleatórios de um certo intervalo
Normalmente, os números aleatórios a serem gerados precisam estar em um determinado intervalo (por exemplo, entre 1 e 40, inclusive). Para esse propósito, o método nextInt () também pode aceitar um parâmetro int. Indica o limite superior para o intervalo de números. No entanto, o número limite superior não é incluído como um dos números que podem ser selecionados. Isso pode parecer confuso, mas o método nextInt () funciona do zero para cima. Por exemplo:
escolherá apenas um número aleatório de 0 a 39, inclusive. Para escolher um intervalo que começa com 1, basta adicionar 1 ao resultado do método nextInt (). Por exemplo, para escolher um número entre 1 e 40, inclua um no resultado:
Se o intervalo começar com um número maior que um, você precisará:
- menos o número inicial do número limite superior e adicione um.
- adicione o número inicial ao resultado do método nextInt ().
Por exemplo, para escolher um número de 5 a 35, inclusive, o número limite superior será 35-5 + 1 = 31 e é necessário adicionar 5 ao resultado:
Quão aleatória é a classe aleatória?
Devo salientar que a classe Random gera números aleatórios de maneira determinística. O algoritmo que produz a aleatoriedade é baseado em um número chamado semente. Se o número inicial for conhecido, é possível descobrir os números que serão produzidos a partir do algoritmo. Para provar isso, usarei os números a partir da data em que Neil Armstrong pisou pela primeira vez na Lua como meu número de semente (20 de julho de 1969):
Não importa quem executa esse código, a sequência de números "aleatórios" produzidos será:
Por padrão, o número de semente usado por:
é o tempo atual em milissegundos desde 1 de janeiro de 1970. Normalmente, isso produzirá números aleatórios o suficiente para a maioria dos propósitos. No entanto, observe que dois geradores de números aleatórios criados no mesmo milissegundo gerarão os mesmos números aleatórios.
Também tenha cuidado ao usar a classe Random para qualquer aplicativo que precise de um gerador de números aleatórios seguro (por exemplo, um programa de jogo). Pode ser possível adivinhar o número da semente com base no tempo em que o aplicativo está em execução. Geralmente, para aplicativos em que os números aleatórios são absolutamente críticos, é melhor encontrar uma alternativa ao objeto Aleatório. Para a maioria das aplicações em que apenas precisa haver um determinado elemento aleatório (por exemplo, dados para um jogo de tabuleiro), ele funciona bem.