histogramData method

Map<String, dynamic> histogramData({
  1. int sampleCount = 1000,
  2. int binCount = 20,
  3. double mean = 50,
  4. double stdDev = 15,
})

Generates histogram data.

Implementation

Map<String, dynamic> histogramData({
  int sampleCount = 1000,
  int binCount = 20,
  double mean = 50,
  double stdDev = 15,
}) {
  final samples = _random.normalList(sampleCount, mean, stdDev);
  final min = samples.reduce((a, b) => a < b ? a : b);
  final max = samples.reduce((a, b) => a > b ? a : b);
  final binWidth = (max - min) / binCount;

  final bins = List.filled(binCount, 0);
  for (final sample in samples) {
    final binIndex =
        ((sample - min) / binWidth).floor().clamp(0, binCount - 1);
    bins[binIndex]++;
  }

  return {
    'bins': List.generate(
        binCount,
        (i) => {
              'x0': min + i * binWidth,
              'x1': min + (i + 1) * binWidth,
              'count': bins[i],
              'frequency': bins[i] / sampleCount,
            }),
    'samples': samples,
    'mean': mean,
    'stdDev': stdDev,
  };
}