728x90
Random()은 숫자가 랜덤으로 나오게 해주는 클래스로 Scanner()와 사용방법은 거의 비슷합니다.
java.util.Random을 import 해주고 new 키워드를 사용해 객체를 생성 후 사용 가능합니다.
package com.test01;
import java.util.Random;
public class MTest{
public static void main(String[] args) {
Random rd = new Random();
System.out.println(rd.nextInt(100));
}
}
해당 코드를 출력하면 0부터 99까지의 숫자 100가지를 랜덤으로 출력시킵니다.
그리고 java.lang.Math 클래스를 이용해서 랜덤 숫자를 뽑아내는 방법도 있는데요.
간단하게 알아보겠습니다.
double ran = Math.random();
System.out.println(ran); // 0 <= ran < 1의 실수값이 나옴
int min = 20;
int max = 30;
//(int)(Max.random() * (max - min + 1)) + min;
//min ~ max(max 포함)
int rd = (int)(Math.random() * (max - min + 1)) + min;
System.out.println("random : " + rd);
위의 코드는 20부터 30까지의 값을 랜덤으로 출력시키는 코드입니다.
0부터 1사이의 숫자를 랜덤으로 발생시키는 Math.random()에 최대로 나오게 할 수에 최소로 나오게 할 수를 빼고 곱하고 인트 형으로 변환을 해준 다음 최솟값을 더해주면 원하는 범위의 숫자를 랜덤으로 하게 나올 수 있습니다.
하지만 중간에 1을 더해주지 않으면 최댓값이 나오지 않습니다.
그렇기에 1을 더해주는 것입니다.
지금까지 알아본 개념과 Random을 통해 로또 코드를 코딩할 수 있는데요.
코드를 한번 알아보겠습니다.
int[] lot = new int [6];
Random num = new Random();
//중복제거
for(int i = 0; i < lot.length; i++) {
lot[i] = num.nextInt(45)+1;
for(int j = 0; j < i; j++) {
if(lot[i] == lot[j]) {
i--;
}
}
}
//정렬
for(int i = 0; i < lot.length; i++) {
for(int j = 0; j < i;j++) {
if(lot[j] > lot[i]) {
a = lot[i]; lot[i] = lot[j]; lot[j] = a;
}
}
}
//출력
for(int i = 0; i < lot.length; i++) {
System.out.printf("%d ", lot[i]);
}
먼저 1부터 45사이의 난수를 6개 출력시키고 중복된 수를 제거합니다.
그다음 작은 수부터 차례로 정렬합니다.
마지막은 정렬된 코드를 출력합니다.
728x90
'Java 관련 > Java' 카테고리의 다른 글
[Java] 인터페이스(Interface) (0) | 2021.10.23 |
---|---|
[Java] 메소드(method) (0) | 2021.10.22 |
[Java] 얖은값 복사(Shallow copy), 깊은값 복사(Deep copy) (1) | 2021.10.19 |
[Java] 배열(Array) (0) | 2021.10.18 |
[Java] Scanner() (0) | 2021.10.17 |