static void RunHashTable(TestCaseOptions opt) { int[] testParams = new int[] { 50, 10, 10 }; SetupParams(opt.Params, testParams); int n = testParams[0]; int capacity = testParams[1]; int numResults = testParams[2]; float loadFactor = 1f; var ht = new StubHashTable <Guid, int>(capacity, loadFactor); var keys = new List <Guid>(); for (var i = 0; i < n; i++) { var guid = Guid.NewGuid(); keys.Add(guid); ht[guid] = i; } var chainSizes = ht.Store.Select(ele => ele?.Count ?? 0).ToArray(); Console.WriteLine("HashTable Entries for n entries: {0} capacity: {1} ", n, capacity); var arr = new string[keys.Count]; for (var i = 0; i < keys.Count; i++) { arr[i] = string.Format("{0}: {1}", keys[i], ht[keys[i]]); } DisplayResults(arr, numResults, "\n"); }
static void RunHashTableDistribution(TestCaseOptions opt) { int[] testParams = new int[] { 50, 10 }; SetupParams(opt.Params, testParams); int n = testParams[0]; int capacity = testParams[1]; float loadFactor = n; var ht = new StubHashTable <Guid, int>(capacity, loadFactor); var keys = new List <Guid>(); for (var i = 0; i < n; i++) { var guid = Guid.NewGuid(); keys.Add(guid); ht[guid] = i; } var chainLengths = ht.Store.Select(ele => (double)(ele?.Count ?? 0)).ToList(); Console.WriteLine("HashTable Distribution for n: {0} capacity: {1}", n, capacity); Console.WriteLine("Mean: {0} Median: {1} Mode: {2}", chainLengths.Average(), Helper.Median(chainLengths), Helper.Mode(chainLengths)); var sd = Helper.StandardDeviation(chainLengths); Console.WriteLine("Standard Deviation {0}", sd); }