Apesar de definir a semente da classe Random com um valor específico, o gerador de números aleatórios está retornando consistentemente o mesmo número. Vamos explorar o que pode estar causando esse problema.
A classe Java Random foi projetada para gerar números pseudo-aleatórios. Por padrão, ele usa seu relógio interno como valor inicial, fazendo com que ele gere uma sequência de números relativamente previsível. Para personalizar a sequência, você pode definir explicitamente uma semente usando o método setSeed().
A semente é um valor numérico usado para inicializar o estado interno do gerador de números aleatórios. Este estado determina a sequência de números gerados.
No código fornecido, você está criando uma nova instância de Random dentro do método random(). Isso significa que toda vez que você chama random(), uma nova semente está sendo definida, substituindo efetivamente o valor inicial definido anteriormente.
Para resolver esse problema, você precisa compartilhar a instância Random em toda a classe. Ao criar uma única instância e definir a semente uma vez quando a classe é inicializada, você garante que a mesma sequência de números seja gerada de forma consistente.
O seguinte código atualizado resolve o problema:
public class Numbers { private Random randnum; public Numbers() { randnum = new Random(); randnum.setSeed(123456789); } public int random(int i) { return randnum.nextInt(i); } }
Neste código atualizado:
Ao fazer essas alterações, você agora obterá números aleatórios diferentes ao chamar random() de diferentes partes do seu programa, respeitando o valor inicial especificado.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3