안녕하세요. 스마트팩토리입니다.
자바 프로그램에 수학 관련 자주 활용하는 메서드 중에 하나가 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+"입니다");
}
}
'Java' 카테고리의 다른 글
자바 중급 1.클래스와 객체 - 클래스와 객체의 이해 (0) | 2021.08.07 |
---|---|
자바기초 # 026. Array 배열의 합과 평균 구하는 프로그램 sum+=score[i]; 향상된 for문 (0) | 2021.08.04 |
자바기초 # 024. for 반복문을 이용한 배열의 초기화 (1부터 10까지 저장)및 출력(1부터 10까지 출력) , Arrays.toString(변수명) (0) | 2021.08.01 |
자바기초 # 023. 배열 길이 배열변수.length , 배열 요소 출력 for문 (0) | 2021.07.31 |
자바기초 # 022. array 배열 선언과 초기화(3) 배열 인덱스(index) 와 배열 값 저장 및 출력하기 (0) | 2021.07.30 |
댓글