메모장

Random 본문

JAVA/개념정리

Random

Itchild 2024. 4. 6. 14:17
728x90
반응형

 

java에서 난수 발생(Random) 방법에 대해 알아보자 !

난수는 일정 범위 안에 아무 값을 발생 시키는 것을 의미한다.

ex )Random rand = new Random();

int num = rand.nextInt(100) //0~99 까지의 수 중 랜덤

 

 

int[] stu = new int[6];

 

// 랜덤으로 정수를 생성해보자

Random rand = new Random(); // 랜덤할 수 있는 기계를 미리 만들어놔야한다.

 

for (int i = 0; i < stu.length; i++) {

// stu[i] = 랜덤수;

stu[i] = rand.nextInt(101); // 0~100 까지

System.out.print(stu[i] + " ");

}

System.out.println();

 

연습문제

출처 입력

 

// 1. N개의 랜덤수를 생성

// 2. 랜덤수는 1~10까지 중에서 생성된다고 합니다

// ex) 6 : 10 1 2 2 3 4

// 3. 이 랜덤수들의 평균을 출력

// 4. 평균보다 높은 값들을 '저장', 이후에 출력

 

// ★ 풀이를 한국어로 작성해보자 ★

// 1. Random를 생성 (상관없을때는 N을 내가 지정할때)

// 2. N을 결정해야함 ( N도 랜덤으로 하고 싶을땐 랜덤먼저)

// 3. N개만큼의 랜덤수를 생성

// 4. 총합 ----> 평균

// 5. 평균보다 높은 값들을 저장할 공간 생성

// 6. 평균보다 높은 값들을 저장할 공간에 값 저장

// 7. 6을 출력

 

// [1]

Random rand = new Random();

int N = rand.nextInt(10) + 1;

// rand.nextInt(101) --->> 0~100

// rand.nextInt(10) + 1 --->> 1~10

 

// [3]

// 배열쓰고 싶다!

// : 배열 3요소를 모두 만족하므로 , 사용가능!

 

int[] data = new int[N];

// data[0] = 10;

// data[0] = 10;

// data[0] = 10;

// data[0] = 10;

// data[0] = 10;

// data[0] = 10;

// 내가 복사붙여넣기를 반복 하고 있네 ? for문 을 사용하자

 

// [4]

 

int sum = 0; // 총점을 저장할 변수

 

// 우리가 쓰던 for문

// for (int i = 0; i < stu.length; i++) {

// sum += stu[i]; // 총점을 차곡차곡 쌓는다. (복합연산자로)

// }

 

// 향상된 for문 == forEach 문

// 배열과 for문이 같이 쓰이면서 forEach문을 쓴다.

for (int v : data) { // 오른쪽에 있는 배열이 하나씩 나타내줄게

System.out.println("랜덤수 " + v);

sum += v;

}

System.out.println("총합: " + sum);

double avg = sum * 1.0 / data.length;

System.out.println("평균: " + avg);

 

// [5] 평균보다 높은 값들을 저장할 공간 생성

// 배열 3요소 확인 중...

// : 현재 배열의 개수를 알수가없다!

// a) 예상

// b) 확인후 배열생성 --->> "평균보다 높은값들이 몇개일까?"

int num = 0; // 평균보다 높은 값들을 저장할 공간의 갯수 생성

for (int v : data) {

if (v > avg) { // 평균보다 높나요?

num++;

}

}

System.out.println("평균보다 높은값들은 " + num + "개"); // b 완료

 

int[] data2 = new int[num]; // 평균보다 높은 값들을 저장할 공간 생성 완료

 

// [6]

int j = 0; // data2 배열에대한 인덱스

for (int i = 0; i < data.length; i++) {

if (data[i] > avg) { // 평균보다 높을때만

data2[j++] = data[i];

// => data[i]를 data2[j]에 대입하고,

// j가 한칸이동

}

}

 

// [7]

System.out.print("평균보다 큰값은...");

for (int v : data2) {

System.out.print(v + " ");

}

System.out.println("입니다.");

 

728x90
반응형

'JAVA > 개념정리' 카테고리의 다른 글

객체 지향 언어 [JAVA]  (0) 2024.04.06
Flag 알고리즘  (0) 2024.04.06
Scanner  (0) 2024.04.06
반복문 (for문)  (0) 2024.04.06
반복문 (while문)  (0) 2024.04.06