package com.interview.random;
/**
* Reservoir Sampling
* 150qs 18.3
*/
public class SelectMRandomNumbersInStream {
public int[] selectRandom(int arr[],int m){
int result[] = new int[m];
for(int i=0; i < m ;i++){
result[i] = arr[i];
}
for(int i=m ; i < arr.length; i++){
int random = (int)(Math.random()*i) + 1;
if(random <= m){
result[random-1] = arr[i];
}
}
return result;
}
public static void main(String args[]){
SelectMRandomNumbersInStream srn = new SelectMRandomNumbersInStream();
int arr[] = {1,2,3,4,5,6,7,8,9,10,11,12,13};
int result[] = srn.selectRandom(arr, 5);
for(int i=0; i < result.length; i++){
System.out.print(result[i] + " ");
}
}
}