/ JAVA

객체지향 프로그래밍 복습 (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);
	}

}

결과