using System;
using System.Collections.Generic;
public class Program
{
private static IList<int> selectReservoir(int[] arr, int N) {
int size = arr.Length;
IList<int> reservoir = new List<int>();
Random rand = new Random();
int items = 0;
while (items < N) {
int i = rand.Next(0, size); // index between 0 to size
bool 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++;
}
}
return reservoir;
}
public static void Main(string[] args)
{
int[] arr = new int[] {4, 9, 14, 96, 13, 0, 3, 99, 19, 2, 80, 1, 7};
int N = 5;
IList<int> reservoir = selectReservoir(arr, N);
Console.WriteLine(string.Join(' ', reservoir));
}
}
/*
run:
13 96 0 1 80
*/