본문 바로가기
Java

자바기초 # 025. 자바 메서드(1) Math.random() 난수얻기 1부터 10까지 임의 정수 출력하기(제비뽑기)

by Smart Factory in 2020 2021. 8. 1.
728x90
반응형

안녕하세요. 스마트팩토리입니다. 

자바 프로그램에 수학 관련 자주 활용하는 메서드 중에 하나가 Math. random이 있습니다. 이를 이용하면 다양한 코딩을 할 수 있는데 그 활용 방법을 알아보겠습니다. 

1. 자바 메서드:  Mathe.random()

가. Math.random() 란?

(1) Math.random()이란?
 임의 수를 랜덤으로 저장하는 메서드

(2) Math.random 매서드범위

0.0<=Math.random()<1.0

 

매쓰램덤은 말그대로 난수를 랜덤으로 보여주는 매서드입니다. 이는 실행할때 마다 다른 값을 보여주는데 이를 활용하면 다양한 프로그램을 작성할 수 있습니다. 

매스램덤으로 num 변수를 지정하고 출력해 보았습니다. 

0.24595146362078735 로 랜덤값이 소수 17짜라기 나옵니다. 

package Arrays;

public class Ex02_12mathrandom {
public static void main(String[] args) {
double num=Math.random();
System.out.println("매쓰랜덤 난수값="+num+"입니다");
}
}

난수값으로 0보다 크거나 같고 1보다 작은 범위의 값이 나오는 것을 알 수 있습니다. 

말그대로 랜덤으로 수가 나오게 됩니다. 

실행할때 마다 랜덤으로 소수자 나오는 것을 알 수 있습니다. 

나. Math.random() 활용하기- 제비뽑기

 

(1) 1부터 10까지 임의의 수 나오게 하기
 
강제형 변환하여 1부터 10사이의 정수 중 램덤으로 출력하기

매스랜덤으로 얻은 값을 변수  num에 저장하였습니다.

0<=num<1.0

 num*10 하면 

0<=num*10 <10.0 이 됩니다. 

(num*10)+ 1를 하면

1<=(num*10)+ 1<11.0 입니다. 

이 범위를 int형으로 강제형 변환하면 

(int)((num*10)+ 1) 입니다. 

1<=(int)((num*10)+ 1)<11 범위에서 정수만 랜덤으로 나오게 됩니다. 

물론 정수형으로 강제형변환을 먼저하고 1을 더해도 결과는 동일합니다. 

<<num 값의 소수 첫째자리 값에 1을 더한 값이 정수로 나오는 것을 알 수 있습니다. >>

 

package Arrays;

public class Ex02_13mathrandom2 {
public static void main(String[] args) {
double num=Math.random();  --> 난수값 얻기 
int inum=(int)(num*10+1);  --> 정수형으로 강제형변환

System.out.println("매쓰랜덤 난수값="+num+"입니다");
System.out.println("1부터 10까지 랜덤 정수값"+inum+"입니다");
}
}

(2) 1부터 10까지  난수 얻기 

num과  num1은 아무 관련없는 값입니다. 둘다 램덤으로 연관을 두지 않았습니다. 

방식은 첫번째와 동일합니다. 

package Arrays;

public class Ex02_12mathrandom {
public static void main(String[] args) {
double num=Math.random();
int inum=(int)(Math.random()*10+1);

System.out.println("매쓰랜덤 난수값="+num+"입니다");
System.out.println("1부터 10까지 랜덤 정수값"+inum+"입니다");
}
}

 

2. 매쓰랜덤 강제 형변환 :(float)(Math.random());

 

 

 

Math.random 메소드를 시작부터 형변환을 해 보았습니다. double, float. int형으로 각각 작성해 보면 그 차이를 확실히 알 수 있습니다. 매스랜덤의 범위를 잘 파악하여 난수값을 얻을때 유용하게 사용할 수 있습니다. 

package Arrays;

public class Ex02_13mathrandom2 {
public static void main(String[] args) {
double num1=Math.random();
float num2=(float)(Math.random());
int num3=(int)(Math.random()+1);
int num4=(int)(Math.random()*10+1);

System.out.println("double num1="+num1+"입니다");
System.out.println("float num2="+num2+"입니다");
System.out.println("int num3="+num3+"입니다");
System.out.println("int num4="+num4+"입니다");

}
}

 

 

728x90
반응형

댓글