static string PickWord(RandomNumberGenerator rng, char[] removeThese, bool requireUppercase, bool uppercaseOnlyFirstLetters) { Debug.Assert(rng != null); string s; do { // Pick a word at random within the dictionary: int v = rng.GetBitsInRange(dictionaryBitOrder, dictionaryCount); s = wordList[v]; if (removeThese != null) { s = s.Filter(removeThese); // We rejected all the chars; try again: if (s.Length == 0) continue; } // Uppercase the first letter of each word: if (requireUppercase && uppercaseOnlyFirstLetters) s = Char.ToUpper(s[0]) + s.Substring(1); break; } while (true); return s; }