Я пытаюсь создать случайные значения base32, которые имеют 6 символов или меньше. Это должно дать примерно 1 миллиард различных комбинаций.
Я создал программу для генерации этих "случайных" чисел. Однако, похоже, он генерирует дубликат в среднем каждые 40 000 поколений.
Почему эти "случайные" числа повторяются так часто, когда существует более миллиарда разных комбинаций?
Вот мой код:
static void Main(string[] args)
{
int seed = Environment.TickCount;
Random r = new Random(seed);
Dictionary<int, int> resultDictionary = new Dictionary<int, int>();
for (int x = 1; x <= 1000; x++)
{
Dictionary<string, int> dictionary = new Dictionary<string, int>();
try
{
while (true)
{
int rand = r.Next(0, 1073741823);
CrockfordBase32Encoding encoding = new CrockfordBase32Encoding();
string encodedRand = encoding.Encode((ulong)rand, false);
dictionary.Add(encodedRand, rand);
}
}
catch (Exception)
{
}
Console.WriteLine(string.Format("{0} - {1}", x, dictionary.Count));
resultDictionary.Add(x, dictionary.Count);
x++;
}
Console.WriteLine();
Console.WriteLine("Average Number Before Duplicate: " + resultDictionary.Average(x => x.Value));
Console.ReadLine();
}