Math.random()을 이용한 난수 생성
Java에서 난수를 생성할 때 가장 많이 사용되는 방법 중 하나가 Math.random() 메서드이다.
Math.random()은 java.lang.Math 클래스에 속한 정적 메서드이고 기본적으로 0.0 (포함)에서 1.0 (미포함) 사이의
난수를 생성한다
배열의 인덱스값을 랜덤으로 생성해서 배열을 셔플하거나,
1 ~ 45 범위의 로또 번호 생성, x y 좌표 랜덤 등 다양한 곳에 사용가능하다.
실수이기 때문에 정수를 원한다면 (int)로 캐스팅하여 정수로 변환한다.
시작수를 n, 종료를 m 이라고 할 때(이때 n,m은 양의 정수)
기본 활용 형식
(int)(Math.random() * m) + n
범위 : 1 ~ 45
(int)(Math.random() * 45) + 1
범위 : 0 ~ 5
(int)(Math.random() * 5)
시작수를 n, 종료를 m 이라고 할 때(이때 n은 음의 정수)
기본 활용 형식
(int)(Math.random()∗(m−n+1))+n
범위 : -10 ~ 10
(int)(Math.random()∗(10-(-10)+1)) - 10
범위 : - 2000 ~ 4000
(int)(Math.random()∗(4000−(-2000)+1)) - 2000
※ n, m의 절대값을 더한 후 1 더해주면 종료값이라 생각하면 편하다 => 6001
예제
// 0.0 이상 1.0 미만의 난수 생성
double ran1 = Math.random(); // 0.0 <= num < 1.0
System.out.println("0.0 이상 1.0 미만의 난수: " + ran1);
// 0부터 9까지의 정수 난수 생성
// (Math.random() * 10) 의 결과는 0.0 (포함)에서 10.0 (미포함) 사이의 실수
// 정수로 변환하기 위해 (int)로 캐스팅
// 0부터 9까지의 정수가 생성
int ran2 = (int)(Math.random() * 10); // 0 <= num <= 9
System.out.println("0부터 9까지의 정수 난수: " + ran2);
// 1부터 10까지의 정수 난수 생성
// 1을 더함으로써 난수의 범위를 1에서 10으로 변경
// 0 + 1 <= num <= 9 + 1
// 1 <= num <= 10
int ran3 = (int)(Math.random() * 10) + 1;
System.out.println("1부터 10까지의 정수 난수: " + ran3);
// -10부터 10까지의 정수 난수 생성
// (Math.random() * 21)의 결과는 0.0 (포함)에서 21.0 (미포함) 사이의 실수입니다.
// 여기에 -10을 더해 난수의 범위를 -10에서 10
// -10부터 10까지의 정수가 생성
int ran4 = (int)(Math.random() * 21) - 10; // -10 <= num <= 0
System.out.println("-10부터 0까지의 정수 난수: " + ran4);
반응형
'JAVA' 카테고리의 다른 글
[JAVA][09] Scanner 클래스 (0) | 2024.11.17 |
---|---|
[JAVA][07] 형변환(Type Casting) (0) | 2024.10.22 |
[JAVA][06] 변수 기본 타입(Primitive Type) (0) | 2024.10.12 |
[JAVA][05] 변수값 바꾸기1 (0) | 2024.10.09 |
[JAVA][04] 변수(Variable)란? (1) | 2024.10.03 |