My footsteps

로또 배열 랜덤값 본문

국비수업/수업정리

로또 배열 랜덤값

밀김 2023. 2. 28. 10:12
728x90

 

 

 

 

 

 

 

 

 

- Random 객체는 0부터 값을 채워준다

 

		int[] lotto = new int[6];
		//로또라는 이름의 정수 6개를 담을 수 있는
		
		Random rand = new Random();
		//랜덤 값을 랜덤 객체에 담는
		
		for(int i=0; i<lotto.length; i++) {
			lotto[i] = rand.nextInt(45)+1; //0부터 시작인데 로또엔 0이 없으니 +1을 해줌
			//객체는 0부터 담으니까 +1을 해서 1~45 범위로 만들어주고 lotto객체에 담는다 lotto[0]
		}//for문 end

		for(int i=0; i<lotto.length; i++) {
			System.out.printf("%d",lotto[i]);
			if(i!=5)//i가 5가 아닐때만 콤마를 출력한다
			System.out.print(",");
			//로또 배열의 값 출력
		}

 

 

 

 

<랜덤값 정렬해서 나오게 하기>
1. 빈공간을 만들고
2. 값을 하나 넣고
3. 비어진 공간에 옆에 있던 값 땡기고
4. 빈공간에 들어있던 값을 옆으로 이동한 애의 자리에 넣는다

 

 

 

		//로또의 0번째 값과 1번째 값의 위치를 변경
		int tmp=0;
		//빈공간 만들어주기
		tmp = lotto[0];//A공간의 값을 빈공간에 옮기고
		lotto[0] = lotto[1];//B공간의 값을 A공간에 옮기고
		lotto[1] = tmp;//빈공간의 값을 B공간에 옮긴다
		
		for(int i=0; i<lotto.length; i++) {
			System.out.printf("%d",lotto[i]);
			if(i!=5)
				System.out.print(",");
			//로또 배열의 값 출력
			//정렬 된 배열의 출력
		}System.out.println();

 

 

 

 

- Thread.sleep(1000) 1초 뒤에 출력되게 한다. 1000밀리세컨드라서 1초 

 

 

 

 

<값 바뀌는거 잘보이는 코드 ㅎㅎ 쓰레드 사용>

package ex4;
import java.util.Random;
public class lotto {
	public static void main(String[] args) throws InterruptedException {
		
		
		int[] lotto = new int[6];
		//로또라는 이름의 정수 6개를 담을 수 있는
		Random rand = new Random();
		//랜덤 값을 로또 배열에 담는
		for(int i=0; i<lotto.length; i++) {
			lotto[i] = rand.nextInt(45)+1;
			//객체는 0부터 담으니까 +1을 해서 1~45 범위로 만들어주고 lotto객체에 담는다 lotto[0]
		}//for문 end
		
		for(int i=0; i<100; i++)
			System.out.println();

		for(int i=0; i<lotto.length; i++) {
			System.out.printf("%d",lotto[i]);
			if(i!=5)
				System.out.print(",");
			//로또 배열의 값 출력
			//초기 랜덤 값
		}System.out.println();
		
		
		Thread.sleep(2000);
		
		//100줄 밀고 > 값 출력하고 > 쓰레드(재우고)


		//로또의 0번째 값과 1번째 값의 위치를 변경
		//빈공간 만들어주기
		int tmp = lotto[0];//A공간의 값을 빈공간에 옮기고
		lotto[0] = lotto[1];//B공간의 값을 A공간에 옮기고
		lotto[1] = tmp;//빈공간의 값을 B공간에 옮긴다
		
		for(int i=0; i<100; i++)
			System.out.println();
		
		for(int i=0; i<lotto.length; i++) {
			System.out.printf("%d",lotto[i]);
			if(i!=5)
				System.out.print(",");
			//로또 배열의 값 출력
			//정렬 된 배열의 출력
		}System.out.println();
		
		Thread.sleep(2000);

		
		{
			int tmp2 = lotto[1];//A공간의 값을 빈공간에 옮기고
			lotto[1] = lotto[2];//B공간의 값을 A공간에 옮기고
			lotto[2] = tmp;//빈공간의 값을 B공간에 옮긴다
			
			for(int i=0; i<100; i++)
				System.out.println();
			
			for(int i=0; i<lotto.length; i++) {
				System.out.printf("%d",lotto[i]);
				if(i!=5)
					System.out.print(",");
				//로또 배열의 값 출력
				//정렬 된 배열의 출력
			}System.out.println();
		}Thread.sleep(2000);
		
		
		
		{
			int tmp2 = lotto[2];//A공간의 값을 빈공간에 옮기고
			lotto[2] = lotto[3];//B공간의 값을 A공간에 옮기고
			lotto[3] = tmp;//빈공간의 값을 B공간에 옮긴다
			
			for(int i=0; i<100; i++)
				System.out.println();
			
			for(int i=0; i<lotto.length; i++) {
				System.out.printf("%d",lotto[i]);
				if(i!=5)
					System.out.print(",");
				//로또 배열의 값 출력
				//정렬 된 배열의 출력
			}System.out.println();
		}Thread.sleep(2000);
		
		
		
		{
			int tmp2 = lotto[3];//A공간의 값을 빈공간에 옮기고
			lotto[3] = lotto[4];//B공간의 값을 A공간에 옮기고
			lotto[4] = tmp;//빈공간의 값을 B공간에 옮긴다
			
			for(int i=0; i<100; i++)
				System.out.println();
			
			for(int i=0; i<lotto.length; i++) {
				System.out.printf("%d",lotto[i]);
				if(i!=5)
					System.out.print(",");
				//로또 배열의 값 출력
				//정렬 된 배열의 출력
			}System.out.println();
		}Thread.sleep(2000);
		
		
		
		{
			int tmp2 = lotto[4];//A공간의 값을 빈공간에 옮기고
			lotto[4] = lotto[5];//B공간의 값을 A공간에 옮기고
			lotto[5] = tmp;//빈공간의 값을 B공간에 옮긴다
			
			for(int i=0; i<100; i++)
				System.out.println();
			
			for(int i=0; i<lotto.length; i++) {
				System.out.printf("%d",lotto[i]);
				if(i!=5)
					System.out.print(",");
				//로또 배열의 값 출력
				//정렬 된 배열의 출력
			}System.out.println();
		}Thread.sleep(2000);
		
		
		
		
		
		
		
	}
}

 

 

 

<자릿값 계속 바꾸는 코드 for문으로 정리한거>

package ex4;
import java.util.Random;
public class lotto {
	public static void main(String[] args) throws InterruptedException {
		
		
		int[] lotto = new int[6];
		Random rand = new Random();
		
		for(int i=0; i<lotto.length; i++) {
			lotto[i] = rand.nextInt(45)+1;
		}//배열에 값 넣어주는 for문
		
		for(int i=0; i<100; i++)
			System.out.println();
		//출력시 100줄 미는 for문
        //100줄로 설정한 이유는 콘솔창의 리미트가 딱 100줄??이래서 100줄로 밀면 더 내려갈곳이 없어서 숫자만 바뀌게 나온당..
		
		for(int i=0; i<lotto.length; i++) {
			System.out.printf("%d",lotto[i]);
			if(i!=5)
				System.out.print(",");
		}System.out.println();
		Thread.sleep(2000);//출력for문

		

		//자리가 바뀌는거는 계속 반복되니까 반복문으로..
		//반복되는걸 찾고(중복제거...) 어떻게 반복문으로 바꿀지..
		for(int i=0; i<5; i++) {//배열의길이는 6인데 i<5인 이유는, 총 바뀌는 횟수가 5번이라서 0~4.로또 배열의 길이로 하면 길이 초과했다고 오류남
			int tmp = lotto[i];
			lotto[i] = lotto[i+1];
			//자릿값이 늘어남에 따라 i+1
			lotto[i+1] = tmp;
			//계속 자리를 바꿔줘야하니까 이부분이 메인이 되는 for문을 생성한것
			
			for(int j=0; j<100; j++)
				System.out.println();
			//출력시 100줄 미는 for문
			
			for(int k=0; k<lotto.length; k++) {
				System.out.printf("%d",lotto[k]);
				if(k!=5)
					System.out.print(",");
			}System.out.println();
			Thread.sleep(2000);
			//출력for문
		}

	}
}

 

 

 

 

<앞에 값이 뒤에 값보다 클때만 바꾼다>

		int[] lotto = new int[6];
		Random rand = new Random();
		
		for(int i=0; i<lotto.length; i++) {
			lotto[i] = rand.nextInt(45)+1;
		}//배열에 값 넣어주는 for문
		
		for(int i=0; i<100; i++)
			System.out.println();
		//출력시 100줄 미는 for문
		
		for(int i=0; i<lotto.length; i++) {
			System.out.printf("%d",lotto[i]);
			if(i!=5)
				System.out.print(",");
		}System.out.println();
		Thread.sleep(2000);//출력for문

		

		//자리가 바뀌는거는 계속 반복되니까 반복문으로..
		//반복되는걸 찾고(중복제거...) 어떻게 반복문으로 바꿀지..
		for(int i=0; i<5; i++) {//배열의길이는 6인데 i<5인 이유는, 총 바뀌는 횟수가 5번이라서 0~4.로또 배열의 길이로 하면 길이 초과했다고 오류남
			//계속 자리를 바꿔줘야하니까 이부분이 메인이 되는 for문을 생성한것
			
			//앞의 값이 뒤의 값보다 클때만 바꾼다
			if(lotto[i+1]<lotto[i]) { //부등호 방향을 바꾸면 작은값이 맨 뒤로간다
				int tmp = lotto[i];
				lotto[i] = lotto[i+1];
				lotto[i+1] = tmp;
			}
			
			for(int j=0; j<100; j++)
				System.out.println();
			//출력시 100줄 미는 for문
			
			for(int k=0; k<lotto.length; k++) {
				System.out.printf("%d",lotto[k]);
				if(k!=5)
					System.out.print(",");
			}System.out.println();
			Thread.sleep(2000);
			//출력for문
		}

 

 

 

 

- 버블정렬: 제일 큰 수부터 작은 수까지 정렬하는것 (큰놈이 수면위로 뽀골뽀꼴 올라간다...)

 

 

 

 

<버블 정렬법>

		for(int i=0; i<5; i++) {
			for(int j=0; j<5-i; j++)//5-i를 하는 이유는 이미 찾아낸 숫자니까 빼주는것.
				//ex)0번째와1번째를 비교함 > 0번째는 이미 비교가 되고 그에대한 결과가 나와서 또 반복될 필요가 없음 (다음은 1,2번째 비교니까)
				if(lotto[i+1]<lotto[i]) {
					int tmp = lotto[i];
					lotto[i] = lotto[i+1];
					lotto[i+1] = tmp;
				}
			
			for(int j=0; j<100; j++)
				System.out.println();
			//출력시 100줄 미는 for문
			
			for(int k=0; k<lotto.length; k++) {
				System.out.printf("%d",lotto[k]);
				if(k!=5)
					System.out.print(",");
			}System.out.println();
			Thread.sleep(2000);
			//출력for문
		}

 

 

- 버블정렬법 그림 설명 > https://datamoney.tistory.com/237

 

[정렬 알고리즘] 버블 정렬

2021.08.23 - [자료구조 & 알고리즘] - [알고리즘] 정렬 📎 버블 정렬 버블 정렬은 맨 끝단부터 이웃한 두 요소의 비교-교환의 과정을 진행하며 정렬하는 알고리즘이다. 버블정렬의 과정 정렬되지 않

datamoney.tistory.com

 

 

 

 

 

 

728x90

'국비수업 > 수업정리' 카테고리의 다른 글

파일 입출력  (0) 2023.03.02
웹퍼블리싱(CSS) / 1  (0) 2023.02.28
웹퍼블리싱(HTML) / 2  (0) 2023.02.25
배열  (0) 2023.02.23
switch문  (0) 2023.02.22