package com.interview.random; public class RandomCountrySelectionByPopluation { public int getRandom(int []arr){ int sum[] = new int[arr.length]; sum[0] = arr[0]; int n = arr[0]; for(int i=1; i < sum.length; i++){ sum[i] = sum[i-1] + arr[i]; n += arr[i]; } int ran = (int)(Math.random()*n + 1); int low = 0; int high = arr.length-1; int mid = (high + low)/2; while(true){ if(sum[mid] >= ran && (mid-1 == -1 || sum[mid-1] < ran)){ break; } if(sum[mid] > ran){ high = mid-1; }else{ low = mid+1; } mid = (high + low)/2; } return mid; } public static void main(String args[]){ RandomCountrySelectionByPopluation rcsp = new RandomCountrySelectionByPopluation(); int arr[] = {5,5,2,3,7,1}; for(int i=0; i < 10; i++){ System.out.print(rcsp.getRandom(arr)); } } }