-
[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