histogramQuantile function

List<int> histogramQuantile(
  1. List<num> values,
  2. List<double> quantiles
)

Bin boundaries at quantiles (e.g. 0, 0.25, 0.5, 0.75, 1). quantiles in 0,1, sorted.

Implementation

List<int> histogramQuantile(List<num> values, List<double> quantiles) {
  if (values.isEmpty || quantiles.length < 2) return <int>[];
  final List<num> sorted = List<num>.of(values)..sort();
  final List<num> edges = quantiles.map((double q) {
    final double idx = (sorted.length - 1) * q;
    final int i = idx.floor().clamp(0, sorted.length - 1);
    return sorted[i];
  }).toList();
  return histogramFixed(values, edges);
}