[prg] Генерация псевдослучайных чисел в быстрой последовательности
Здравствуйте господа. Чем можно заменить генератор псевдослучайных чисел
из класса Random в C#, чтобы в быстрой последовательности хотя бы
генерировались
разные последовательности?
//генерация случайного набора из пяти букв
string GetRandomName()
{
Random rnd = new Random();
string pw = string.Empty;
for (int i = 0; i < 6; i++)
{
pw += (char)rnd.Next('a', 'z');
}
return pw;
}
for (int i = 0; i < 11; i++)
{
listBox1.Items.Add(GetName());
//если не использовать задержку -- будут повторяться последовательности
System.Threading.Thread.Sleep(19);
}
тем чаще будут получаться одинаковыми последовательности, чем меньше
время задержки. На самом деле 19 -- это уже чтобы наверняка. Можно
поставить и меньше,
но лучше не рисковать. Все это неплохо работает, если нужно
сгенерировать небольшое количество информации, но когда речь идет о
больших объемах сгенерированных
слов, то задержка уже начинает очень мешать.
Чем и как заменить этот Random? Если можно, пример.
Приветствую всех!
Во-первых, в вашем коде есть ошибки: GetRandomName или GetName?
Во-вторых, чтобы последовательности букв в вашем случае не повторялись,
экземпляр Random должен создаваться один раз (а у вас это происходит 11
раз), поэтому не используйте локальный вариант экземпляра Random. Сделайте,
например, экземпляр Random в виде static-поля класса и проинициализируйте
его один раз.
В-третьих, в документации к Random есть ответы на все ваши вопросы.
Успехов. Анатолий.
Исходное сообщение > Чем можно заменить генератор псевдослучайных чисел