const int maxcount = 19; int distrib[maxcount + 2]; int uniques = 0; bzero(distrib, sizeof(distrib)); for (int i = 0; i < tabsize; i += 1) { int len = 0; entry * ptr = hashtable[i]; while (ptr != NULL) { uniques += 1; len += 1; ptr = ptr->next; } if (len <= maxcount) distrib[len] += 1; else distrib[maxcount + 1] += 1; } double lambda = uniques / (double)tabsize; double expect = exp(- lambda) * tabsize; for (int i = 0; i <= maxcount + 1; i += 1) { cout << setw(2) << i << ": " << setw(10) << distrib[i] << " expect " << (int)expect << "\n"; expect = expect * lambda / (i + 1); } cout << "> : " << distrib[20] << "\n";