public void Random_numbers_are_spread_uniformly(int seed, int measurementsCount, int range, bool log) { var reservoir = new UniformHistogramReservoir(); var random = new Random(seed); for (var i = 0; i < measurementsCount; i++) { reservoir.Add(random.Next(range)); } var snapshot = reservoir.GetSnapshot(); var maxError = range * 0.05; snapshot.MeasurementsCount.Should().Be(measurementsCount); AssertQuantile(snapshot, 0, range, maxError, log); AssertQuantile(snapshot, 0.25, range, maxError, log); AssertQuantile(snapshot, 0.50, range, maxError, log); AssertQuantile(snapshot, 0.75, range, maxError, log); AssertQuantile(snapshot, 0.90, range, maxError, log); AssertQuantile(snapshot, 0.95, range, maxError, log); AssertQuantile(snapshot, 0.99, range, maxError, log); AssertQuantile(snapshot, 0.999, range, maxError, log); AssertQuantile(snapshot, 1, range, maxError, log); }
public void Snapshot_should_contain_measurementCount_values_if_it_is_less_than_buckets_count() { var reservoir = new UniformHistogramReservoir(); for (var i = 0; i < 10; i++) { reservoir.Add(i); } var snapshot = reservoir.GetSnapshot(); snapshot.Sample.Count.Should().Be(10); }
public void Add(double value) { sum.Add(value); histogram.Add(value); }