서노썬
sun noes sun
서노썬
전체 방문자
오늘
어제
  • 카테고리 (142)
    • Java (89)
      • Day1 (20)
      • Day2 (16)
      • Day3 (4)
      • Day4 (5)
      • Day5 (2)
      • Day6 (2)
      • Day7 (4)
      • Day8 (6)
      • Day9 (3)
      • Day10 (0)
      • Day11 (0)
      • Day12 (0)
      • Day13 (3)
      • Day14 (0)
      • Day15 (0)
      • Day16 (0)
      • Day19 (0)
      • Day20 (0)
      • Day21 (2)
      • Day22 (4)
      • Day23 (2)
      • Day24 (5)
      • Day25 (4)
      • Day27 (2)
      • Day28 (3)
      • Day29 (1)
      • Day30 (1)
      • Day31 (0)
      • Day32 (0)
      • Dat33 (0)
      • Day34 (0)
      • Day35 (0)
      • Day36 (0)
    • HTML (37)
      • Day36 (20)
      • Day37 (3)
      • Day38 (2)
      • Day39 (8)
      • Day40 (3)
    • SQL (4)
      • Day40 (4)
      • Day41 (0)
      • Day42 (0)
      • Day43 (0)
      • Day44 (0)
      • Day45 (0)
    • JSP (0)
      • Day46 (0)
      • Day75 (0)
    • PYTHON (0)
      • Day75 (0)
      • Day76 (0)
    • Photo (12)

블로그 메뉴

  • 홈
  • 방명록

인기 글

최근 글

태그

  • 자바continue
  • 자바
  • 자바break
  • 자바연산자
  • 논리연산자
  • Java
  • 자바자료형
  • java메뉴입력
  • java데이터타입
  • java자료형

티스토리

hELLO · Designed By 정상우.
서노썬

sun noes sun

Java/Day13

[Java] 난수 - 두 수 사이의 난수 생성 & 로또 숫자 생성

2021. 11. 15. 23:33

1. 두 수 사이의 난수

 

프로그램 사용자로부터 최대 정수 A와 최소 정수 B를 입력 받는다. 그리고 A와 B사이에 존재하는(A와 B도 포함) 난수 10개를 생성해서 출력하는 프로그램을 작성해보자.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.Scanner;
import java.util.Random;
 
class RandomGame
{
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        Random rand = new Random();
 
        int start=0, end=0;
        System.out.println("첫 번째 숫자를 입력하세요.");
        start = sc.nextInt();
        System.out.println("두 번째 숫자를 입력하세요.");
        end = sc.nextInt();
       System.out.println("==========================");
        
        for(int i=0; i<10; i++)
            System.out.print(rand.nextInt(end-start+1)+start+" ");
    }
}

 
cs

 

 

2. 난수 - 로또 자동 생성기

 

- 1부터 45까지의 숫자 6개

- 한 줄에 숫자 6개 총 5줄 랜덤 생성

- 같은 줄 내에서는                                                                                                                                 -중복 숫자 없음.

 

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import java.util.Arrays;
import java.util.Random;
 
class Lotto
{
    private int[] lotto;
    private Random random;
    private final int MAX = 6;
 
    Lotto()
    {
        lotto = new int[MAX];
        random = new Random();
    }
    public void execute()
    {
        makeLotto();
        sortLotto();
        printLotto();
    }
    public boolean chkNum(int idx)
    {
        for(int i=0; i<idx; i++)
        {
            if(lotto[idx] == lotto[i])
            {
                return false;
            }
        }
        return true;
    }
    public void makeLotto()
    {
        for(int i=0; i<lotto.length; i++)
        {
            lotto[i] = random.nextInt(45)+1;
            if( !chkNum(i))
            {
                i--;
            }
        }
    }
    public void sortLotto()
    {
        Arrays.sort(lotto);
    }
    public void printLotto()
    {
        System.out.println(Arrays.toString(lotto));
    }
}
class LottoMain
{
    public static void main(String[] args)
    {
        Lotto lotto = new Lotto();
        for(int i=0; i<5; i++)
            lotto.execute();
    }
}
 
cs

 

 

- 1차원 배열 버전

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import java.util.Arrays;
import java.util.Random;
 
class Lotto
{
    private int[] lotto;
    private int[] number;
    private Random random;
    private final int MAX = 6;
    private final int RANGE = 45;
    
    Lotto()
    {
        number = new int[RANGE];
        lotto = new int[MAX];
        random = new Random();
        for(int i=0;i<number.length;i++)
            number[i] = i+1;
    }
    public void execute()
    {
        shuffle();
        sortLotto();
        printLotto();        
    }
    public void shuffle()
    {
        for(int i=0;i<RANGE;i++)
        {
            for(int j=0;j<10;j++)
            {
                int k = random.nextInt(45);
                int temp = 0;
                temp = number[i];
                number[i] = number[k];
                number[k]= temp;
            }
        }
        System.arraycopy(number, 0, lotto, 0, MAX);
    }    
    public void sortLotto()
    {
        Arrays.sort(lotto);
    }
    public void printLotto()
    {
        System.out.println(Arrays.toString(lotto));
    }
}
    
class LottoMain2
{
    public static void main(String[] args)
    {    
        Lotto lotto = new Lotto();
        for(int i=0;i<5;i++)
            lotto.execute();
    }
}
 
cs

 

 

- 2차원 배열 버전

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import java.util.Arrays;
import java.util.Random;
 
class Lotto
{
    private int[][] lotto;
    private Random random;
    private final int MAX = 6;
    private int numOfLotto;
    
    Lotto(int numOfLotto)
    {
        this.numOfLotto = numOfLotto;
        lotto = new int[numOfLotto][MAX];
        random = new Random();
    }
    public void execute()
    {
        makeLottos();
        sortLottos();
        printLottos();        
    }
    public void makeLottos()
    {
        for(int i=0;i<numOfLotto;i++)
        {
            makeLotto(lotto[i]);
        }
    }
    public void sortLottos()
    {
        for(int i=0;i<numOfLotto;i++)
        {
            sortLotto(lotto[i]);
        }
    }
    public void printLottos()
    {
        for(int i=0;i<numOfLotto;i++)
        {
            printLotto(lotto[i]);
        }
    }    
    public boolean chkNum(int idx, int[] lotto)
    {
        for(int i=0;i<idx;i++)
        {            
            if(lotto[idx]==lotto[i])
            {
                return false;
            }
        }
        return true;
    }
 
    public void makeLotto(int[] lotto)
    {
        int tmp=0;
        for(int i=0;i<lotto.length;i++)
        {
            lotto[i] = random.nextInt(45)+1;
            if( !chkNum(i, lotto) )
            {
                i--;
            }
        }
    }
 
    public void sortLotto(int[] lotto)
    {
        Arrays.sort(lotto);
    }
 
    public void printLotto(int[] lotto)
    {
        System.out.println(Arrays.toString(lotto));
    }
}    
class LottoMain3
{
    public static void main(String[] args)
    {    
        Lotto lotto = new Lotto(5);
        lotto.execute();
    }
}
Colored by Color Scripter
cs

'Java > Day13' 카테고리의 다른 글

[Java] 난수 - 숫자 야구게임  (0) 2021.11.16
[Java] 변수  (0) 2021.11.15
    'Java/Day13' 카테고리의 다른 글
    • [Java] 난수 - 숫자 야구게임
    • [Java] 변수

    티스토리툴바