shuffleInPlace<T> function

void shuffleInPlace<T>(
  1. List<T> data,
  2. List<T> labels, {
  3. int? seed,
})

Shuffle data and labels together (Fisher–Yates)

Implementation

void shuffleInPlace<T>(List<T> data, List<T> labels, {int? seed}) {
  if (data.length != labels.length) {
    throw ArgumentError('Data and labels must have the same length.');
  }

  final random = seed != null ? Random(seed) : Random();

  for (int i = data.length - 1; i > 0; i--) {
    final j = random.nextInt(i + 1);
    final tempX = data[i];
    final tempY = labels[i];
    data[i] = data[j];
    labels[i] = labels[j];
    data[j] = tempX;
    labels[j] = tempY;
  }
}