해결된 질문
작성
·
365
·
수정됨
답변 2
3
안녕하세요?
Random 의 사용법은 패키지 (chap_07._11_Package) 를 공부할 때 배웠습니다. IntelliJ 에서 Ctrl + Shift + F 를 입력하신 뒤에 찾으려는 검색어 (예: Random) 를 입력하시면 어느 곳에서 해당 구문이 사용되었는지 쉽게 확인하실 수 있답니다. 😆
Math.random() 과 Random 은 사실 크게 다르지 않습니다. Random 은 java.util 패키지 내에, Math 는 java.lang 패키지 내에 정의되어 있는데요.
System.out.println(new Random().nextDouble()); // java.util.Random
System.out.println(Math.random()); // java.lang.Math
Math.random() 부분을 Ctrl 누른 상태에서 클릭해보시면 다음과 같이 생긴 메소드를 확인할 수 있구요.
// 1. Math.random() 메소드
public static double random() {
return RandomNumberGeneratorHolder.randomNumberGenerator.nextDouble();
}
randomNumberGenerator 라는 부분을 동일한 방법으로 클릭해보시면 이렇게 정의된 것을 확인할 수 있습니다.
// 2. randomNumberGenerator 객체
static final Random randomNumberGenerator = new Random();
그리고 뒤의 .nextDouble() 부분을 동일하게 클릭해보시면 다음과 같은데요.
// 3. nextDouble() 메소드 (= java.lang.nextDouble)
public double nextDouble() {
return (((long)(next(26)) << 27) + next(27)) * DOUBLE_UNIT;
}
이 메소드가 구현된 위치를 확인해보면 결국 java.util.Random 클래스라는 것을 알 수 있습니다.
단, Math.random() 은 double 실수값만 랜덤으로 뽑을 수 있는 반면에 Random 을 이용하면 double, float, boolean, int, long 등 다양한 형태의 수를 뽑을 수 있습니다.
감사합니다 😊
0
지나가다 보았지만, 강의 퀄리티만큼 답변도 장난이 아니네요..! 질문한 사람도 아닌데 제가 다 감동 받고 갑니다.. 유튜브 멤버쉽도 했지만 이런 내용을 보니 돈주고 산 보람이 있네요... ㅠ
안녕하세요, InChestry 님!
제 강의를 통해 공부하시는 분들이 하나씩 개념을 익혀나가는 모습을 보면 정말 큰 보람을 느낍니다. 질문글이 올라오면 저도 과거에 많이 겪어봤기에 어떤 부분을 어려워하시는지 충분히 이해도 되구요 ㅎㅎ 유료 강의인 만큼 수강생 분들이 모든 내용을 충분히 이해하고 넘어가실 수 있도록 제가 할 수 있는 선에서 최선을 다하겠습니다.
따뜻한 말씀 진심으로 감사하며, 저도 초심을 잃지 않도록 노력하겠습니다.
감사합니다 😊