Java Random seed 값에 대해...
자바에서 서로 다른 seed값을 가지는 여러개의 랜덤 generator로부터 랜덤값을 생성하려고 합니다.
그런데 이상한점은 seed값이 모두 다른데, nextDouble() 함수로 랜덤 값을 생성할때 처음 호출되는 값이 seed값이 다르더라도 모두 비슷한 값을 생성해냅니다.
두번째부터 호출하는 nextDouble부터는 적당히 다른값을 밷어내는데요... 처음 값이 왜 이런지 모르겠네요...
아래는 테스트 코드와 출력 결과입니다.
-- 코드 --
import java.util.Random;
public class HelloWorld {
public static void main(String[] args) {
Random r1, r2, r3, r4, r5;
r1 = new Random(1);
r2 = new Random(2);
r3 = new Random(3);
r4 = new Random(50);
r5 = new Random(1000);
System.out.println(r1.nextDouble());
System.out.println(r2.nextDouble());
System.out.println(r3.nextDouble());
System.out.println(r4.nextDouble());
System.out.println(r5.nextDouble());
}
}
-- 결과 --
0.7308781907032909
0.7311469360199058
0.731057369148862
0.7297136425657874
0.7101849056320707
보시다시피 거의다 0.7xxxx 가 나옵니다.
왜 이런걸까요?
SecureRandom 을 써보심이...
이유를 알려면 내부 algorithm을 알아야겠지요.
댓글 달기