객체지향 프로그래밍 복습 (2) Random 클래스
[JAVA] 객체지향 프로그래밍 복습 (2) Random 클래스
자바
자바(Java)는 C언어에 객체 지향적 기능을 추가하여 만든 C++과는 달리, 처음부터 객체 지향 언어로 개발된 프로그래밍 언어입니다. 자바는 자바 가상 머신(JVM, Java Virtual Machine)을 사용하여, 운영체제와는 독립적으로 동작할 수 있습니다. 따라서 자바는 어느 운영체제에서나 같은 형태로 실행될 수 있습니다. 바로 이러한 점이 수많은 개발자로 하여금 자바를 사용하게 하는 원동력이 되고 있습니다. 현재 자바는 전 세계에서 가장 많이 사용하는 프로그래밍 언어 중 하나입니다.
Random 클래스
자바의 Random 클래스로 상한, 하한, 난수의 개수(10~20)를 입력받아 랜덤으로 출력하고 가장 작은 수, 큰 수, 합과 평균, 표준편차를 구합니다.
package LAB02;
import java.util.Scanner;
import java.util.Random;
public class random {
public static void main(String[] args) {
Random generator = new Random();
Scanner sc = new Scanner(System.in);
//난수의 개수와 상한, 하한 변수 선언
int count = 0;
int lowerBound = 0;
int upperBound = 0;
int sum = 0; //배열의 합
int max = 0; //최대값
int min = 0; //최소값
double dev = 0; //편차
double dev2 = 0; //편차 제곱의 합
double avg = 0; //배열의 평균
double var = 0; //분산
double stdDev = 0; //표준편차
//count 변수 값을 받기 위한 loop. 정상적인 값이 들어올때까지 반복.
while(true) {
System.out.print("생성할 난수의 개수를 입력하세요(10과 20사이): ");
count = sc.nextInt();
if(count < 10 || count > 20) {
System.out.println("10~20의 정수를 입력해주세요.");
} else
break;
}
//상한, 하한 변수 값을 받기 위한 loop. 정상적인 값이 들어올때까지 반복.
while(true) {
System.out.print("생성할 난수의 하한을 입력하세요: ");
lowerBound = sc.nextInt();
System.out.print("생성할 난수의 상한을 입력하세요: ");
upperBound = sc.nextInt();
if(upperBound - lowerBound < 1) {
System.out.println("상한이 하한보다 커야합니다.");
} else
break;
}
//numArray 배열 선언 후 count 값에 따라 크기 설정. for문으로 랜덤 값을 넣습니다.
int numArray[] = new int[count];
System.out.print("배열: ");
for(int i = 0; i < count; i++) {
numArray[i] = generator.nextInt(upperBound - lowerBound + 1) + lowerBound;
System.out.print(numArray[i] + " ");
sum += numArray[i]; //배열의 합 구하기
}
avg = (double)sum / count; //sum변수로 평균구하기
//최대, 최소값 구하기
max = numArray[0];
min = numArray[0];
for(int k = 0; k < count; k++) {
if(numArray[k] > max) {
max = numArray[k];
}
if(numArray[k] < min) {
min = numArray[k];
}
}
//표준편차 구하기
for(int j = 0; j < count; j++) {
dev = numArray[j] - avg; //편차
dev2 += Math.pow(dev, 2); //편차의 제곱을 합하여 dev2에 저장
}
var = dev2 / count; //편차 제곱의 합을 개수로 나누어 분산구하기
stdDev = Math.sqrt(var); //분산의 제곱근은 표준편차
System.out.println("\n가장 큰 수: " + max + "\n가장 작은 수: " + min + "\n평균: " + avg + "\n배열의 합: " + sum + "\n배열의 표준편차: " + stdDev);
}
}