Object | +---DScore
The DScore class implements a score in a (discrete) distribution. The score object is updated with new values and calculates the length, the average or mean, the variance, the standard deviation, the sum and the squared sum. A score object is not a collection: the update values are not stored in the object; the state of the object is updated with the new value.
#include <stdio.h> #include "ofc/DDiscreteDistribution.h" int main(int argc, char *argv[]) { DDiscreteDistribution *dis = [DDiscreteDistribution new]; DListIterator *iter; double d; // Setup the discrete ranges for (d = 0.0; d < 5.0; d += 0.5) { [dis range :d :d+0.5]; } // Set the values for the distribution if (![dis update :0.1]) printf("Value 0.1 is not valid for the distribution.\n"); if (![dis update :4.2]) printf("Value 4.2 is not valid for the distribution.\n"); if (![dis update :3.6]) printf("Value 4.2 is not valid for the distribution.\n"); if (![dis update :2.2]) printf("Value 4.2 is not valid for the distribution.\n"); if (![dis update :0.5]) printf("Value 4.2 is not valid for the distribution.\n"); if (![dis update :3.0]) printf("Value 4.2 is not valid for the distribution.\n"); if (![dis update :2.1]) printf("Value 4.2 is not valid for the distribution.\n"); if (![dis update :4.9]) printf("Value 4.2 is not valid for the distribution.\n"); // Calculate some numbers printf("Number of values in the distribution:%d.\n", [dis length]); printf("Sum of values in the distribution:%.1f.\n", [dis sum]); printf("SqSum of values in the distribution:%.1f.\n", [dis sumSquared]); printf("Mean of values in the distribution:%.1f.\n", [dis mean]); printf("StdDev of values in the distribution:%.1f.\n", [dis standardDeviation]); // Scores iterator iter = [dis scores]; if (iter != nil) { DScore *sc = [iter first]; while (sc != nil) { printf("Score:[%.1f-%0.1f] sum:%.1f sq-sum:%.1f perc:%.1f%%.\n", [sc min], [sc max], [sc sum], [sc sumSquared], [sc percentage]); sc = [iter next]; } } else printf("No scores in the distribution ?!\n"); [iter free]; [dis free]; // Cleanup return 0; }