У меня есть ситуация, когда мне нужно создавать десятки тысяч уникальных чисел. Однако эти цифры должны быть 9 цифр и не могут содержать никаких 0. Мой текущий подход состоит в том, чтобы сгенерировать 9 цифр (1-9) и объединить их вместе, и если номер еще не внесён в список, добавив его в него. Например.
public void generateIdentifiers(int quantity)
{
uniqueIdentifiers = new List<string>(quantity);
while (this.uniqueIdentifiers.Count < quantity)
{
string id = string.Empty;
id += random.Next(1,10);
id += random.Next(1,10);
id += random.Next(1,10);
id += " ";
id += random.Next(1,10);
id += random.Next(1,10);
id += random.Next(1,10);
id += " ";
id += random.Next(1,10);
id += random.Next(1,10);
id += random.Next(1,10);
if (!this.uniqueIdentifiers.Contains(id))
{
this.uniqueIdentifiers.Add(id);
}
}
}
Однако примерно в 400 000 процесс действительно замедляется, так как все больше и больше генерируемых чисел дублируются. Я ищу более эффективный способ выполнения этого процесса, любая помощь будет действительно оценена.
Изменить: - Я генерирую их - http://www.nhs.uk/NHSEngland/thenhs/records/Pages/thenhsnumber.aspx