Нет, в Java нет примера функции, как в R. Однако можно написать такую функцию:
// Samples n elements from original, and returns that list
public <T> static List<T> sample(List<T> original, int n) {
List<T> result = new ArrayList<T>(n);
for (int i = 0; i < original.size(); i++) {
if (result.size() == n)
return result;
if ((n - result.size()) >= (original.size() - i)) {
result.add(original.get(i));
} else if (Math.random() < ((double)n / original.size())) {
result.add(original.get(i));
}
}
return result;
}
Эта функция выполняет итерацию по original
и копирует текущий элемент вresult
основано на случайном числе, если только мы не приблизились достаточно близко к концу original
, чтобы потребовать копирования всех оставшихся элементов (второй оператор if в цикле).