Random클래스
임의의 값(난수) 을 발생시켜주는 클래스
-생성자
* Random() : 현재의 시간을 초기값으로 하는 난수발생
* Random(long seed) : seed값을 초기값으로하는 난수발생
-주요메서드
int nextInt() : 임의의 정수값을 반환
int nextInt(int n) : 0~n까지 범위 내에 있는 임의의 정수 값을 반환
double nextDouble() : 0.0~1.0사이의 임의의 실수값을 반환
[참고]
Math.random() : java.lang.Math 클래스의 random() 메서드 , 0.0~ 1.0 사이의 임의의 더블값을 반환하는 메소드
[코드] Random() 와 Random(long seed) 생성자 관련 예제. |
import java.util.Random; public class ddddddd { public static void main(String[] args) { /* * Random클래스 * -생성자 * Random():현재의 시간을 초기값으로 하는 난수발생 * Random(long seed) : seed값을 초기값으로하는 난수발생 */ System.out.println("== Random 함수 생성시 seed값을 100으로 줬을경우"); Random random = new Random(100); for (int i=0;i<10;i++){ System.out.print(random.nextInt(3)+" "); } System.out.println(); System.out.println("== Random 함수 생성시 seed값을 100으로 줬을경우"); Random random2 = new Random(100); for (int i=0;i<10;i++){ System.out.print(random2.nextInt(3)+" "); } System.out.println(); System.out.println("== Random 함수 생성시 seed값을 50으로 줬을경우"); Random random3 = new Random(50); //seed값을 초기값으로 하는 난수발생 for (int i=0;i<10;i++){ System.out.print(random3.nextInt(3)+" "); } System.out.println(); System.out.println("== Random 함수 생성시 기본생성자로 생성했을경우"); Random random4 = new Random(); for (int i=0;i<10;i++){ System.out.print(random4.nextInt(3)+" "); } System.out.println(); System.out.println("== Random 함수 생성시 기본생성자로 생성했을경우"); Random random5 = new Random(); //현재의 시간을 초기값으로 하는 난수발생. for (int i=0;i<10;i++){ System.out.print(random5.nextInt(3)+" "); } } }
|
결과보기) == Random 함수 생성시 seed값을 100으로 줬을경우 1 1 1 0 1 0 2 2 1 1 == Random 함수 생성시 seed값을 100으로 줬을경우 1 1 1 0 1 0 2 2 1 1 == Random 함수 생성시 seed값을 50으로 줬을경우 1 0 2 1 1 1 1 0 0 1 == Random 함수 생성시 기본생성자로 생성했을경우 0 1 1 0 2 2 1 1 0 0 == Random 함수 생성시 기본생성자로 생성했을경우 1 2 1 2 2 2 1 1 1 1 => Random 객체 생성시 똑같은 seed값을 전달하면 같은 난수가 발생하는 결과를 볼수있다 => 하지만 인자가 없는 생성자로 객체를 생성했을경우 현재의 시간을 초기값으로 하여 난수를 발생하므로 서로 다른 난수가 발생하는것을 볼수있다. |
[코드] Random() : 난수발생 예제. |
import java.util.*; //import java.lang.*; public class RandomTest { public static void main(String args[]) { Random rn = new Random(); //시드를 설정하지 않을경우 //현재프로그램을 실행해보면 매번 다른 값이 아닌 같은 난수가 표시됨을 알 수 있음-->가짜난수!! //시드를 설정 |
시드를 설정하지 않았을경우 rn.setSeed(System.currentTimeMillis()); 코드를 주석 처리했을경우
시드를 설정한경우. rn.setSeed(System.currentTimeMillis()); 코드를 포함하여 실행한 결과 시드를 설정하면 난수를 발생시 얻어오는 값이 (범위보다 적은 난수를 발생했을경우) 중복이 되지 않은것을 확인할수있다.
|