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

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

Barbara Streisand
Barbara Streisand원래의
2024-11-09 13:00:03734검색

Why Do I Keep Getting the Same Random Numbers in Java When Using a Seed?

시드를 사용한 Java 난수 생성: 동일한 출력 디버깅

Java에서 Random 클래스는 의사 난수를 생성하는 방법을 제공합니다. 시드를 인수로 지정하면 생성되는 숫자의 순서를 제어할 수 있습니다. 그러나 동일한 시드를 반복적으로 사용하여 동일한 숫자의 시퀀스가 ​​발생하는 경우 문제가 발생합니다.

의사 난수 생성 및 Seed 이해

의사 난수 생성기(PRNG)는 다음과 같은 난수를 생성하는 알고리즘입니다. 무작위로 보이지만 실제로는 시드라고 알려진 작은 초기 값 세트에 의해 결정되는 일련의 숫자입니다. 시드를 지정하면 PRNG는 매번 동일한 숫자 시퀀스를 생성합니다.

다양한 시퀀스를 생성하도록 코드 조정

동일한 출력 문제를 해결하려면 시드가 어떻게 작동하는지 이해해야 합니다. PRNG에서. Java에서는 시드 인수를 사용하여 Random 클래스를 호출할 때 향후 호출에 대해 동일한 상태를 유지하므로 동일한 숫자 시퀀스가 ​​생성됩니다.

다양한 시퀀스를 생성하려면 인수가 없는 인수를 호출하는 것이 좋습니다. 시스템 나노타임을 시드로 사용하는 Random의 생성자입니다. 이렇게 하면 메소드가 호출될 때마다 다른 시드가 사용됩니다.

코드 수정

다음 수정된 Java 코드는 인수가 없는 생성자를 사용하여 다양한 난수 시퀀스를 생성합니다.

private Random generator = new Random();

double randomGenerator() {
    return generator.nextDouble() * 0.5;
}

Random 인스턴스를 메서드 외부로 이동하고 시스템 나노타임을 시드로 사용하여 이 코드는 동일한 출력 문제를 제거하고 서로 다른 랜덤 시퀀스를 생성합니다. 숫자.

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

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