public static int Main() { var hashes = new IStringHash[] { new StandardHash (), new MurmurHash2Simple (), new SuperFastHashSimple (), /* new CryptographicHash (MD5.Create ()), new CryptographicHash (SHA1.Create ()), new CryptographicHash (RIPEMD160Managed.Create ()), new CryptographicHash (MACTripleDES.Create ()) */ }; var bloom = new BloomFilter (1000003, hashes); var positive = new List<string> (); var negative = new List<string> (); var toggle = true; foreach (var line in File.ReadAllLines ("/usr/share/dict/words")) { var l = line.Trim (); if (toggle) { positive.Add (l); bloom.Add (l); } else { negative.Add (l); } toggle = !toggle; } Console.WriteLine ("occupancy for " + positive.Count + " words: " + bloom.Occupancy ()); foreach (var line in positive) { if (!bloom.Lookup (line)) { Console.WriteLine ("error!"); return 1; } } int false_positives = 0; foreach (var line in negative) { if (bloom.Lookup (line)) ++false_positives; } Console.WriteLine ("false positives: " + ((float)false_positives / negative.Count)); return 0; }