자바(Java)〃난수를 얻는 랜덤(Random) 메소드 + 클래스

반응형


요즘 하루에 자바 복습을 한개나 두개밖에 못하니 속도가 많이 느려져서 오늘은 어떤 공부를 해야될지 가늠이 잘 안되는데요. 어제 문자열까지 정리를 하고 jsp로 넘어갈까 하다가 Random에 대한 부분을 건너뛰면 후회할 것 같아 다시 돌아왔습니다.


왜냐하면 6개월전 학원을 처음 다녔을 때 강사님이 초반에 로또 프로그램을 만들어 보라 해서 배웠던게 Random메소드였고 scanner를 이용한 타자 프로그램도 random을 사용했기에 이번에 쏵 정리해보겠습니다.




랜덤 메소드 ( Math 클래스의 메소드 )


math 클래스의 random메소드는 범위가 0.0~1.0인 실수 리턴타입을 가지고 있어 기본적으로 double 타입을 선언해줍니다. 

그래서 ①번을 돌린 결과 0.49224…의 출력값을 볼 수 있었고, ②번은 로또처럼 실수가 아닌 정수형의 출력값을 얻기 위해 양쪽에 int로 형변환을 해주고 1을 더하여 0이 아닌 수가 출력되게 하였습니다. 


랜덤 메소드를 마치기전 Math 클래스에 사용할만한 것들을 정리해봤습니다. 선언하는 방식은 똑같고 버림값은 소수점에서 버려줘야 되니 double 리턴타입만 사용가능하다고 보면 되겠네요. 




■ 랜덤(Random) 클래스

랜덤 클래스는 그 클래스 내부의 메소드들이 따로 존재하고 그 메소드들을 사용해야 하지만 모든 리턴값을 사용할 수 있다는 점에서 아주 유용합니다. 또한 seed(시드)라고 불리는 서로 다른종자값을 같게 해주면 같은 난수를 가질 수 있도록 설정이 가능합니다. 시드는 객체를 생성해줄때 Random aaa = new Random(10); 에서 매개변수값 10이 시드값이라고 보시면 됩니다.


메소드로는 next리턴타입()으로 nextBoolean / nextDouble / nextInt 모두 난수를 출력하는 메소드입니다. 여기서 nextInt()는 범위가 으로 상당한 범위를 가지고 있지만 nextInt(45)로 매개변수값을 넣어주면 로 범위를 가지게 되네요.


위 예제는 간단하게 로또처럼 1부터 45개의 숫자중에 6개를 랜덤으로 뽑아 결과로 출력해보았습니다. 한개를 뽑는게 아니라 배열이 추가되었고 범위에 1을 더하는건 nextInt(매개변수)의 범위가 0부터 시작하기 때문입니다. 자세한건 사진에 설명을 적어놓았고 만약에 두개의 랜덤객체를 만들어 똑같은 결과값을 얻고 싶을땐 new Random(시드)에서 시드를 동일하게 적용하면 되겠습니다.  

반응형