고정 시드가 있는 Java 난수: 출력이 동일한 이유는 무엇입니까?
코드에서 다음을 사용하여 난수를 생성하는 방법을 정의했습니다. 지정된 씨앗. 그러나 동일한 시드를 제공하면 생성된 100개의 숫자가 모두 동일하다는 것을 알 수 있습니다.
Random 생성자에서 동일한 시드를 사용하면 예측 가능한 숫자 시퀀스가 생성되기 때문에 이러한 동작이 예상됩니다. 시드는 난수 생성기를 초기화하는 시드 값입니다. 이는 테스트를 다시 실행할 때 일관된 결과를 얻을 수 있으므로 테스트에 중요한 기능입니다.
의사 난수 생성 이해
Java의 Random과 같은 의사 난수 생성기(PRNG) 실제 무작위성에 가까운 시퀀스를 생성합니다. 그러나 시퀀스를 완전히 결정하는 시드를 포함하여 작은 초기 값 세트가 있습니다.
코드 수정
다른 난수 시퀀스를 생성하려면, 매번 같은 시드를 사용하는 것을 피해야 합니다. 대신, 메서드 외부에서 Random 인스턴스를 만들고 인수 없이 초기화하세요. 이 인스턴스는 nanoTime 메서드를 사용하여 고유한 시드 값을 생성합니다.
수정된 코드는 다음과 같습니다.
private Random generator = new Random(); double randomGenerator() { return generator.nextDouble() * 0.5; }
이 변경으로 인해 인스턴스를 실행할 때마다 다른 난수 시퀀스를 얻게 됩니다. RandomGenerator 메소드를 호출합니다.
위 내용은 Java에서 동일한 시드를 사용할 때 동일한 난수를 얻는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!