Salangdung_i의 기록

JAVA 07 :: Random 난수 본문

BACKEND/JAVA

JAVA 07 :: Random 난수

Salangdung_i 2019. 8. 25. 01:01
728x90

이번에는 난수 Random에 대한 공부를 해볼 차례이다.

 

Random이란?

자바에서 난수를 생성하는 방법으로 
Random r = new Random(); // 랜덤객체 생성
int i =r.nextInt(숫자); // i에 랜덤 숫자 대입

r.nextInt(숫자);에서 숫자에 들어가는 수를 5라고하면 0부터 4까지 총 5개의 정수가 랜덤으로 뽑히는 것이다. 

가독성 좋게  r.nextInt(숫자)+1; 로 하여 1부터 내가 max값으로 지정하고 싶은 수까지 랜덤으로 뽑히게끔 만들어 사용한다. 

 

먼저 r.nextInt(숫자) 를 이용해서 지정한 숫자사이에서 랜덤수가 추출되는지 확인해보자.

int num = r.nextInt(100); // 0~99사이의 랜덤수
0~9범위의 랜덤수 추출
int num1 = r.nextInt(9) + 1;// 0~8사이의 랜덤수
20~35범위의 랜덤수 추출
int num2 = r.nextInt(16) + 20;
2.0또는1범위의 랜덤수 추출
int num3 = r.nextInt(2);

public void randomTest() {
		Random r = new Random();
		int num = r.nextInt(100); // 0~99사이의 랜덤수
		System.out.println("랜덤 수 : " + num);

		// 0~9범위의 랜덤수 추출
		int num1 = r.nextInt(9) + 1;// 0~8사이의 랜덤수
		System.out.println("랜덤 수 : " + num1);

		// 1.20~35범위의 랜덤수 추출
		int num2 = r.nextInt(16) + 20;
		System.out.println("랜덤 수 : " + num2);

		// 2.0또는1범위의 랜덤수 추출
		int num3 = r.nextInt(2);
		System.out.println("랜덤 수 : " + num3);

	}

*** Random 선얼 할때 ctrl + space 로 꼭!! import!! 잊지 말아야해요 ***

import java.util.Random;

 

 

범위안에서 랜덤수 들이 추출된 것을 확인할 수 있다. 

 

 

그럼 예제를 통해 Ramdom 을 연습해보자.!!

 

동전 앞/뒤 맞추기 예제
 ==================Console================== 

==========동전 앞/뒤 맞추기==========

숫자를 입력해주세요 (1.앞면/ 2.뒷면) : 1

정답!

 ==================Console================== 

 

이때 주의할 점은  동전의 앞 뒤의로 확정되는 num1을 어디서 지정하냐는 것인데요.   int num1 = r.nextInt(2) + 1; 이 구문 을  while 문 밖에 둔다면 한번 게임이 실행된 후 다음에 게임이 실행될 때도  동전의 앞뒤 숫자는 계속 같은 값을 갖게 됩니다. 

따라서 while 문 안에 int num1 = r.nextInt(2) + 1; 을 해줘야 while 문이 돌때 마다 동전의 앞/뒤가 바뀌게 됩니다.  

public void coin() {

		Random r = new Random();
		Scanner sc = new Scanner(System.in);
		while (true) {
			int num1 = r.nextInt(2) + 1;

			System.out.println("===== 동전 앞/뒤 맞추기 ======");
			System.out.println("숫자를 입력해주세요 (1.앞면/2.뒷면): ");
			int num = sc.nextInt();

			if (num1 == num) {
				System.out.println("정답!");
			} else {
				System.out.println("땡!!!!!!!!");
			}

		}
	}

 

 

가위바위 보 게임

==================Console==================  

=== 가위 바위 보 게임 === 

숫자를 선택하세요 (1.가위/2.바위/3.보) : 1

 ======== 결과 ========= 

당신은 가위를 냈습니다. 

컴퓨터는 보를 냈습니다. 

====================== 

당신이 이겼습니다.ㅠ.ㅠ
 

 ==================Console================== 

앞의 동전게임은 숫자를 입력받고 user가 앞/뒤 중 어떤 것을 입력했는지 다시 보여주는 구문이 없읍니다. 이번 가위바위보 게임에서는 switch문을 사용해서 입력받은 숫자를 문자 값으로 반환해서 user가 가위,바위,보 중 어떤 걸 선택했는지 알려주는 code를 추가하였습니다. 

	public void game() {

		Random r = new Random();
		Scanner sc = new Scanner(System.in);

		int num1 = r.nextInt(3) + 1;
		String str1 = "";
		String str2 = "";

		System.out.println("=== 가위 바위 보 게임 === ");
		System.out.println("숫자를 선택하세요 (1.가위/2.바위/3.보) :");
		int num2 = sc.nextInt();

		System.out.println("======== 결과 =========");
		switch (num1) {
		case 1:
			str1 = "가위";
			break;
		case 2:
			str1 = "바위";
			break;
		case 3:
			str1 = "보";
			break;
		}
		switch (num2) {
		case 1:
			str2 = "가위";
			break;
		case 2:
			str2 = "바위";
			break;
		case 3:
			str2 = "보";
			break;
		}
		System.out.printf("당신은 %s를 냈습니다.\n", str2);
		System.out.printf("컴퓨터는 %s를 냈습니다.\n", str1);
		System.out.println("====================");
		if (num1 == num2) {
			System.out.println("비겼습니다.");
		} else if ((num1 == 3 && num2 == 1) || (num1 == 2 && num2 == 3) || (num1 == 1 && num2 == 2)) {

			System.out.println("당신이 이겼습니다.ㅠ.ㅠ");
		} else {
			System.out.println("당신이 졌습니다.~.~");
		}

	}

"Icon made by Pixel perfect from www.flaticon.com"

728x90