세로형
Recent Posts
Recent Comments
Link
03-29 03:47
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Archives
Today
Total
관리 메뉴

꿈 많은 사람의 이야기

자바 Math 클래스, Random 클래스 본문

java

자바 Math 클래스, Random 클래스

이수진의 블로그 2017. 8. 18. 08:39
Math 클래스


java.lang.Math 클래스는 수학 계산에 사용할 수 있는 메소드를 제공하고 있다. Math 클래스가 제공하는 메소드는 모두 정적(static) 이므로 Math 클래스로 바로 사용이 가능하다. 다음은 Math 클래스가 제공하는 메소드를 설명한 표이다.

메소드
설명
예제코드
리턴값
int abs(int a)
double abs(double a)
절대값
int v1 = Math.abs(-5);
double v2 = Math.abs(-3.14);
v1 = 5
v2 = 3.14
double ceil(double a)
올림값
double v3 = Math.ceil(5.3);
double v4 = Math.ceil(-5.3);
v3 = 6.0
v4 = -5.0
double floor(double a)
버림값
double v5 = Math.floor(5.3);
double v6 = Math.floor(-5.3);
v5 = 5.0
v6 = -6.0
int max(int a, int b)
double max(double a, double b)
최대값
int v7 = Math.max(5, 9);
double v8 = Math.max(5.3, 2.5);
v7 = 9
v8 = 5.3
int min(int a, int b)
double min(double a, double b)
최소값
int v9 = Math.min(5, 9);
double v10 = Math.min(5.3, 2.5);
v9 = 5
v10 = 2.5
double random( )
랜던값
double v11 = Math.random( );
0.0 <= v11 < 1.0
double rint(double a)
가까운 정수의 실수값
double v12 = Math.rint(5.3);
double v13 = Math.rint(5.7);
v12 = 5.0
v13 = 6.0
long round(double a)
반올림값
long v14 = Math.round(5.3);
long v15 = Math.round(5.7);
v14 = 5
v15 = 6


대표적인 것이 Math.random() 메소드이다. 이 메소드는 0.0 과 1.0 사이의 범위에 속하는 하나의 double 타입의 값을 리턴한다.

이것을 응용하려면
(int)(Math.random()*10) 을 할 수 있다. 이렇게 하면 범위가
0부터 9까지의 숫자가 나오게 된다. 1부터 10까지 이용하게 하려면
(int)(Math.random()*10)+1 으로 하면 된다.

만약 start 지점부터 start+n 범위에 속하는 즉
start <= 숫자 < (start+n) 을 하기 위해선 다음과 같이 하면된다.
int num = (int)(Math.random() * n) + start;


Random 클래스


java.util.Random 클래스는 난수를 얻어내기 위해 다양한 메소드를 제공한다. Math.random()메소드는 0.0에서 1 사이의 double 난수를 얻지만 Random 클래스는 boolean, int, long, float, double 난수를 얻을 수 있다.
Random 클래스로부터 Random객체를 생성하는 방법은 다음 2가지 생성자를 이용한다.

생성자
설명
Random()
호출 시마다 다른 종자값(현재시간 이용)이 자동 설정된다
Random(long speed)
매개값으로 주어진 종자값이 설정된다

그리고 이 클래스에는 밑의 메소드가 있다.

리턴값
메소드(매개변수)
설명
boolean
nextBoolean()
boolean 타입의 난수를 리턴
double
nextDouble()
double 타입난수 리턴(0.0 <= ~ <1.0)
int
nextInt()
int 타입 난수 리턴(-2^31≤~≤ (2^31  -1)
int
nextInt(int n)
int 타입 난수를 리턴(0 <= ~ < n)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class RanEx {
    
    public static void main(String[] args) {
        int[] selectNum = new int[6];
        Random ran = new Random(3);
        System.out.println("선택번호 : ");
        for(int i = 0 ; i < 6 ; i++)
        {
            selectNum[i] = ran.nextInt(45+ 1;
            System.out.print(selectNum[i]+"\t");
        }
    }
 
}
Colored by Color Scripter

이런식으로 사용할 수 있다


반응형
그리드형
Comments