import java.util.ArrayList;
import java.util.List;
public class Program {
private static void selectReservoir(Integer[] arr, int N) {
int size = arr.length;
List<Integer> reservoir = new ArrayList<Integer>();
int items = 0;
while (items < N) {
int i = (int)(Math.random() * size) % size; // index between 0 to size
boolean found = false;
// Check if value present in reservoir
for (int j = 0; j < items; j++) {
if (reservoir.contains(arr[i])) {
found = true;
break;
}
}
// If not present add value to the reservoir
if (!found) {
reservoir.add(arr[i]);
items++;
}
}
System.out.println(reservoir);
}
public static void main(String[] args) {
Integer arr[] = { 4, 9, 14, 96, 13, 0, 3, 99, 19, 2, 80, 1, 7 };
int N = 5;
selectReservoir(arr, N);
}
}
/*
run:
[7, 99, 1, 14, 2]
*/