고정 시드가 있는 Java 난수 생성기
질문:
Java에서 설정 시 난수 생성기의 시드인데 다른 클래스에서 메서드를 호출하면 왜 항상 같은 숫자를 반환합니까?
코드:
public class Numbers { public int random(int i) { Random randnum = new Random(); randnum.setSeed(123456789); return randnum.nextInt(i); } }
호출할 때 number.random(10)을 여러 번 반복하면 일관되게 동일한 값이 출력됩니다. 시드 설정 요구 사항을 유지하면서 다른 난수를 생성하도록 코드를 어떻게 수정할 수 있습니까?
답변:
다른 난수가 생성되도록 하려면 임의 인스턴스는 메서드 호출마다 다시 생성되지 않고 전체 클래스에서 공유되어야 합니다. 이는 다음 수정을 통해 달성할 수 있습니다.
public class Numbers { private Random randnum; // Declare the Random instance as a class variable public Numbers() { randnum = new Random(); randnum.setSeed(123456789); } public int random(int i) { return randnum.nextInt(i); } }
클래스 생성자에서 randnum 인스턴스를 초기화하고 클래스의 메서드를 통해 액세스할 수 있도록 함으로써 동일한 Random 객체가 클래스 전체에서 사용되도록 보장합니다. 각 메소드 호출마다 생성되는 다른 난수로 변경됩니다.
위 내용은 Java 난수 생성기가 다른 클래스에서 호출될 때 동일한 숫자를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!