sample method

*<Null safety>*

List<T> sample (int count, [Random? random])

Implementation

List<T> sample(int count, [Random? random]) {
  RangeError.checkNotNegative(count, 'count');
  var iterator = this.iterator;
  var chosen = <T>[];
  for (var i = 0; i < count; i++) {
    if (iterator.moveNext()) {
      chosen.add(iterator.current);
    } else {
      return chosen;
    }
  }
  var index = count;
  random ??= Random();
  while (iterator.moveNext()) {
    index++;
    var position = random.nextInt(index);
    if (position < count) chosen[position] = iterator.current;
  }
  return chosen;
}