출처: BACK TO THE BASIC, JAVA 핵심 요약 노트 : 빠르게 훑어보는 자바 프로그래밍
Math 클래스는 random 메소드가 synchronized 키워드로 동기화 처리되어 있
어서, 멀티 스레드 환경에서 사용하면 성능상에 문제가 발생할 수도 있다.
public static synchronized double random( )
간단한 난수 생성을 위해 Math 클래스의 random( ) 메소드를 사용하는 것은 괜찮지만, 성능에 민감한 프로그램을 작성해야 하는 경우라면 Random 클래스를 사
용하는 것이 좋다.
int nextInt( )
int nextInt(int n)
float nextFloat( )
double nextDouble( )
boolean nextBoolean( )
// 다양한 형태의 랜덤(Random) 값을 리턴한다.
Random r = new Random();
System.out.println("다양한 형태의 난수값");
System.out.println(r.nextInt(100));
System.out.println(r.nextInt());
System.out.println(r.nextDouble());
System.out.println(r.nextFloat());
System.out.println(r.nextBoolean());
// Random 객체를 같은 값으로 생성할 때 같은 값을 리턴한다.
Random rand = new Random(1);
Random rand2 = new Random(1);
System.out.println();
System.out.println("랜덤 객체 : obj1");
for(int i=0; i<5; i++) {
System.out.println(i + " : "+ rand.nextInt());
}
System.out.println();
System.out.println("랜덤 객체 : obj2");
for(int i=0; i<5; i++) {
System.out.println(i + " : "+ rand2.nextInt());
}
=> 비교해보면 결과가 같다는 뜻. seed라고 보면 된다.
'JAVA > JAVA' 카테고리의 다른 글
[JAVA] XPATH를 이용한 XML 파싱 (0) | 2014.09.16 |
---|---|
자바 정규식 표현 (0) | 2014.08.27 |
[자바] 형변환 캐스팅 (0) | 2014.08.26 |
[JAVA] Calendar 클래스 (0) | 2013.06.13 |
[JAVA] 클래스나 메소드가 Deprecated되었다는 의미는? (0) | 2013.06.13 |