X-Git-Url: http://nitlanguage.org diff --git a/src/counter.nit b/src/counter.nit index 14b418d..a9621fe 100644 --- a/src/counter.nit +++ b/src/counter.nit @@ -60,6 +60,36 @@ class Counter[E: Object] #res.sort !cmp a, b = map[a] <=> map[b] return res end + + # Display statistical information + fun print_summary + do + var list = self.sort + print " population: {list.length}" + if list.is_empty then return + print " minimum value: {self[list.first]}" + print " maximum value: {self[list.last]}" + print " total value: {self.total}" + print " average value: {div(self.total,list.length)}" + print " distribution:" + var count = 0 + var sum = 0 + var limit = self[list.first] + for t in list do + if self[t] > limit then + print " <={limit}: sub-population={count} ({div(count*100,list.length)}%); cumulated value={sum} ({div(sum*100,self.total)}%)" + count = 0 + sum = 0 + while self[t] > limit do + limit = limit * 2 + if limit == 0 then limit = 1 + end + end + count += 1 + sum += self[t] + end + print " <={limit}: sub-population={count} ({div(count*100,list.length)}%); cumulated value={sum} ({div(sum*100,self.total)}%)" + end end private class CounterSorter[E: Object]