💙 들어가며
값을 꼭 내가 지정해서 넣어주거나 반복문을 통해 순차적으로 대입해야 할까?
Random클래스를 사용해서 랜덤으로 데이터를 채워보자.
✏️ 학습내용 정리
#Random 클래스
만약 어떤 필요에 의해서 값을 랜덤하게 받아보고 싶다면 Random클래스를 사용할 수 있다.
순차적이지 않은 값들도 알아서 출력해주는 똑똑한 자바덕분에 여러 기능에 활용할 수 있겠다.
한 가지 이해해두어야 할 것은
Random클래스를 통해서 우리가 랜덤하게 받아볼 수 있는 것은 숫자라는 점이다.
랜덤한 문자는 만들 수 없다.
#활용방법
그렇다면 구체적으로 Random클래스를 활용해서 랜덤값을 받으려면 어떻게 해야 할까?
위에서 살짝 언급했듯이 이 클래스를 통해서는 숫자가 생성되기 때문에
신박하게도 여기서 nextInt 메소드를 사용해서 읽어주면 랜덤한 값을 받아볼 수가 있다.
이때, nextInt의 괄호()안에 원하는 범위 만큼의 정수를 입력하면 범위 내의 정수값을 반환하는데
nextInt(45);를 하면 총 45개의 값이 생기는 식이다.
단, 값은 0부터 시작하기 때문에 0~44가 읽히므로, 1부터 45까지 원할 경우에는 +1을 해야 한다.
🚨 Random클래스로 랜덤 정수값을 만들자.
Random rand = new Random();
⭕ rand.nextInt(); // int범위 내 숫자
⭕ rand.nextInt(45); // 0~44
⭕ rand.nextInt(45)+1; // 1~45
⭕ 출력결과:
-1391271264 (int 범위 내 숫자이기 때문에 음수도 나올 수 있다.)
40 (0~44의 값이 나온다.)
16 (1~45의 값이 나온다.)
랜덤 클래스를 통해서 무작위로 번호를 배열에 입력할 수 있게 되었다.
#슈도란?
그런데 Random 클래스를 nextInt로 읽을 경우에 Returns a pseduorandom이라는 말이 나온다.
우리가 자바의 컴파일 방식에 대해서 배울 때, 자바의 번역 순서 중에서 컴파일러와 인터프리터 사이에 중간코드(바이트코드, 슈도코드)를 만든다고 했을 때도 들어봤었던 슈도, 슈도란 무엇일까?
선생님께서는 실제가 아닌 가상이라고 말씀하셨었는데, 궁금한 마음에 위키를 더 찾아보았다.
✏️ pseudo
영어로 가짜의, 거짓의, 유사한이라는 뜻
✏️ pseudo-code
알고리즘을 표현하는 방법 중 하나로, 일반적으로는 자연어를 이용해 만든 문장을 프로그래밍 언어와 유사한 형식으로 배치한 코드를 뜻한다. 용도는 미술의 스케치와 같다.
(EX)
반복문 시작 (a를 2에서 9까지)
반복문 시작 (b를 1에서 9까지)
출력 : a * b = 값 (개행)
반복문 종료
반복문 종료
즉, 슈도란 기본적으로 가짜라는 소리이다.
프로그램은 아무런 로직없이 어떤 값을 임의로 만들어낼 수는 없다.
때문에 우리가 Random클래스를 통해서 얻는 랜덤한 값들도
사실은 정말 무작위한 방법으로 만들어낸 것은 아니고, 어떤 로직에 의해서 이루어진 것이라고 이해할 수 있겠다.
(실제로는 어떤 로직에 의한 가짜랜덤!)
아직은 낯선 개념인 슈도, 앞으로 들을 일이 많을테니, 간단하게라도 이해하고 넘어가는 것이 좋겠다.
💙 마치며
Random클래스를 사용할 때에는 nextInt를 기억하자.
안에 범위를 기재해줘야지만 원하는 값들이 나올 것이다.
그리고 그 값들은 0부터 시작한다는 것을 잊지말자.
'JAVA' 카테고리의 다른 글
[뉴렉처 6기] JAVA│2차 배열 원리 이해하기(230623) (0) | 2023.07.02 |
---|---|
[뉴렉처 6기] JAVA│버블 정렬과 선택 정렬(230623) (1) | 2023.07.01 |
[뉴렉처 6기] JAVA│배열(Array)를 활용한 데이터 편집│최소값, 최대값, 자리바꾸기(230622) (1) | 2023.06.29 |
[뉴렉처 6기] JAVA│반복과 검사 do while│메뉴 switch(230620) (0) | 2023.06.27 |
[뉴렉처 6기] JAVA│메모리(stack, heap)│Garbage Collector│오류와 디버깅(230626) (0) | 2023.06.27 |