-
[JAVA]랜덤 난수 만들기Programming/java 2019. 10. 3. 01:31
자바에서 랜덤 난수로 1~n까지의 무작위 값 얻기
기본적으로 자바에서는 0.0에서 0.999999999 즉 1에 가까운 무한소수까지 중에 하나를 랜덤으로 추출해주는
random() 함수를 제공한다
예를 들면
Math.random() \* 5
를 하면 0.0에서 4.999999...의 값을 리턴 받을 수 있다.여기서 우리는 실수형 double값으로 리턴받는다는 사실을 알 수 있고 int형으로 형변환을 한다면 소수점 이하 자리수는 떨어져 나가고 0~4까지의 랜덤한 값을 리턴받을 수 있다는 점 또한 알 수 있다.
하지만 우리가 원하는 것은 양수, 즉 1이상의 숫자부터라고 한다면?
랜덤해서 나온 값은 1을 넘지 않으므로 그냥 간단하게 뒤에 +1만 붙여주면 된다.
그렇게하면 위에서 예를들은
Math.random() \* 5
는 0에서 4.999의 값이므로 형변환을 해서 소수점 이하는 버렸다고 치면 0은 1이 더해져서 1 그러니까 최소값으로 1을 최대값인 4.9999는 1이 더해져서 5(0.99999...는 버려지므로)가 되므로 우리가 원하는 양수의 1~5의 값을 얻게되었다.public class RandomTest01 { public static void main(String[] args) { int num = 0; num = (int)(Math.random()*5)+1; System.out.println(num); }
그럼 1부터가 아니라 특정한 범위를 구하고 싶다면?
1부터 n까지 난수를 구하는 법은 알았다. 하지만 1이 아닌 특정한 범위의 숫자를 랜덤 출력하고 싶다면?
최소값
min
과 최대값max
라는 변수가 있다고할 때범위만큼의 난수를 만들어주고 최소값을 더해주면 됩니다. 이해하기 쉽게 코드로 보자.
public class RandomTest02 { public static void main(String[] args) { int min = 2; //최솟값 int max = 5; //최댓값 int range = (int)(Math.random() * (max - min + 1)) + min; System.out.println(range); } }
출력 값은 2~5사이의 난수가 나오게 된다.
+1을 하지 않으면 최대값의 범위까지 나오기 않게 된다.
다른 방법으로 랜덤 만들기
import java.util.Random; public class Randomtest3 { public static void main(String[] args) { Random random = new Random(); int num = (int)(Math.random()*10)+1; int num2 = random.nextInt(10)+1; System.out.println("Math.random()으로 만든 숫자:"+num); System.out.println("random.netInt로 만든 숫자 :"+num2); }
위 방법은 자바 유틸에 있는 랜덤 함수 클래스를 이용한 랜덤 난수 만들기이다.
주의해야할 점은 스태틱에 올라와있는 일반적인 기본 함수가 아니기 때문에java.util.Random
을 import시켜야하고Random random = new Random();
이런 식으로 인스턴스화 시켜야한다.그러면 비교적 쉽게 0~매게변수 안의 값까지의 랜덤 난수를 구할 수 있다. 역시 양수의 값을 얻고 싶다면 +1을 할 것.
'Programming > java' 카테고리의 다른 글
debezium server 정리 및 트러블슈팅 (0) 2023.02.06 가비지 컬렉션, 컬렉터(Garbage Collection)란? (0) 2020.03.01 추상클래스와 인터페이스의 공통점과 차이점 (4) 2019.11.03 오버로딩과 오버라이딩의 차이점 (0) 2019.10.28 [JAVA 개념알기]변수 (0) 2019.09.30