Я использую генератор случайных строк, основываясь на этом: qaru.site/info/6756/...
Время от времени он будет генерировать строку длиной 20 символов, как это aaaaaaaaaaaaaaaaaaaa, когда ему нужно создать строку из 20 символов chars, заполненную случайными символами (например, 63TSRVvbVDJiMNwneB5l), например, если случайный объект С# будет возвращать значение 0 каждый раз за 20 итераций.
public static string GetRandomAlphaNumericString(int charCount)
{
var result = new string(
Enumerable.Repeat(CHARS, charCount)
.Select(s =>
{
var nxt = SHARED_RANDOM.Next(s.Length);
var rval = s[nxt];
return rval;
})
.ToArray());
return result;
}
const string CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
public static Random SHARED_RANDOM = new Random(Guid.NewGuid().GetHashCode());
Для меня это не имеет смысла, что я мог наблюдать в этом генераторе? Генератор работает нормально, но время от времени, очень редко, он будет выполнять, как это, производя забавные строки aaaaaaa в течение короткого периода времени.
Я не вижу ошибки в коде, так что для меня это 1 из 2 вещей, или случайный объект С# в некоторых ситуациях действует смешно, возвращая 0 на короткий период времени или изменяя строчную строку CHARS от "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" до "a" в сборке по какой-то причине, на короткий период времени.
Я не могу поверить, что это может быть один из вышеупомянутых, я предпочитаю верить, что я что-то надзираю. Вы видите или представляете, как это могло произойти?
ОБНОВЛЕНИЕ OCT 23/2017
Закодирована тестовая процедура, поэтому, если GetRandomAlphaNumericString создает строку aaaaa, она выдает ошибку, но раньше записывает быстрый отчет.
Отчет генерирует 3 случайных числа в строке и добавляет их в журнал:
SHARED_RANDOM.Next(20);
SHARED_RANDOM.Next(20);
SHARED_RANDOM.Next(20);
Произведенные 3 числа: 0, nice uh?
Это говорит мне, что проблема заключается не в GetRandomAlphaNumericString, а в объекте Random. Существует некоторая коррупция, которая заставляет объект возвращать эти результаты, так что в основном это может быть что угодно!!