File size: 2,744 Bytes
aab9852
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
The following method definition is provided in the program:

ArrayList<Integer> lotterynumbers(Random r)

Write an implementation of the method that returns the lottery numbers in the list. 
There are seven numbers, ranging from [1, 39]. 
The same number cannot appear twice in the list.


Example method call:
public static void main(String[] args){
    Random rnd = new Random();
    System.out.println(lotterynumbers(r));
    System.out.println(lotterynumbers(r));
}

Example output:
[37, 14, 32, 20, 28, 21, 25]
[20, 6, 23, 30, 13, 11, 26]





==================================



import java.util.Random;
import java.util.ArrayList;
import java.util.HashSet;

public class Test{
    public static void main(String[] args){
        final Random r = new Random();
        
        
        System.out.println("Testing...");
        
        ArrayList<Integer> nrot1 = lotterynumbers(r);
        ArrayList<Integer> nrot2 = lotterynumbers(r);
        
        System.out.println("Numbers: " + nrot1);
        System.out.println("");
        


        // check 7 numbers
        System.out.print("Seven numbers in the list: ");
        System.out.println(nrot1.size() == 7 ? "Ok" : "No");
        



        // check 1-39
        boolean limit = true;
        for (int nro : nrot1) {
            if (nro < 1 || nro > 39) limit = false;
        }
        System.out.print("Numbers between 1 and 39: ");
        System.out.println(limit ? "Ok" : "No");



        // check unique
        HashSet<Integer> hs = new HashSet<>(nrot1);
        boolean same = hs.size() == 7;
        System.out.print("All numbers unique: ");
        System.out.println(same ? "Ok" : "No");
        

        // check both lists are different in content
        boolean diff = !(nrot1.equals(nrot2));
        System.out.print("Random numbers: ");
        System.out.println(diff ? "Ok" : "No");
        
        
        
    }



    // RETURN a list of 7 integers
    public static ArrayList<Integer> lotterynumbers(Random r) {
        ArrayList<Integer> numbers = new ArrayList<>();

        for (int i=0; i<7; i++) {
            // r.nextInt(39) => generates 0 to 38
            // +1 => adjusts the range to '1 to 39'
            int nro = r.nextInt(39) + 1;

            // check if number is unique - then add to the list
            if (!numbers.contains(nro)) {
                numbers.add(nro);
            }
            else {
                // adjust idx 'i' back by 1 to generate a new number through the loop
                i--;
            }
        }

        return numbers;

    }
    
}








Testing...
Numbers: [31, 4, 8, 3, 17, 32, 1]

Seven numbers in the list: Ok
Numbers between 1 and 39: Ok
All numbers unique: Ok
Random numbers: Ok