/** * Samples n ids by using SimpleRandomSampling (Simple Random Sampling). * * @param idList * @param n * @param withReplacement * @return */ public static FlatDataCollection randomSampling( FlatDataList idList, int n, boolean withReplacement) { FlatDataList sampledIds = new FlatDataList(); int populationN = idList.size(); for (int i = 0; i < n; ) { if (withReplacement == false && populationN <= n) { /* if replacement is not allowed and we already sampled everything that it can stop */ break; } int randomPosition = PHPMethods.mt_rand(0, populationN - 1); Object pointID = idList.get(randomPosition); if (withReplacement == false) { /* if replacement is not allowed check if the point already exists */ if (sampledIds.contains(pointID)) { continue; } } sampledIds.add(pointID); ++i; } return sampledIds.toFlatDataCollection(); }