>  기사  >  Java  >  Java에서 동일한 시드를 사용할 때 동일한 난수를 얻는 이유는 무엇입니까?

Java에서 동일한 시드를 사용할 때 동일한 난수를 얻는 이유는 무엇입니까?

DDD
DDD원래의
2024-11-09 14:53:02604검색

Why do I get identical random numbers when using the same seed in Java?

고정 시드가 있는 Java 난수: 출력이 동일한 이유는 무엇입니까?

코드에서 다음을 사용하여 난수를 생성하는 방법을 정의했습니다. 지정된 씨앗. 그러나 동일한 시드를 제공하면 생성된 100개의 숫자가 모두 동일하다는 것을 알 수 있습니다.

Random 생성자에서 동일한 시드를 사용하면 예측 가능한 숫자 시퀀스가 ​​생성되기 때문에 이러한 동작이 예상됩니다. 시드는 난수 생성기를 초기화하는 시드 값입니다. 이는 테스트를 다시 실행할 때 일관된 결과를 얻을 수 있으므로 테스트에 중요한 기능입니다.

의사 난수 생성 이해

Java의 Random과 같은 의사 난수 생성기(PRNG) 실제 무작위성에 가까운 시퀀스를 생성합니다. 그러나 시퀀스를 완전히 결정하는 시드를 포함하여 작은 초기 값 세트가 있습니다.

코드 수정

다른 난수 시퀀스를 생성하려면, 매번 같은 시드를 사용하는 것을 피해야 합니다. 대신, 메서드 외부에서 Random 인스턴스를 만들고 인수 없이 초기화하세요. 이 인스턴스는 nanoTime 메서드를 사용하여 고유한 시드 값을 생성합니다.

수정된 코드는 다음과 같습니다.

private Random generator = new Random();
double randomGenerator() {
    return generator.nextDouble() * 0.5;
}

이 변경으로 인해 인스턴스를 실행할 때마다 다른 난수 시퀀스를 얻게 됩니다. RandomGenerator 메소드를 호출합니다.

위 내용은 Java에서 동일한 시드를 사용할 때 동일한 난수를 얻는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.