Я использую следующий метод для получения случайного значения из списка идентификаторов.
private int GetRandomDateBasedSectorId(IEnumerable<int> sectorIds)
{
var randomSortTable = new Dictionary<int, int>();
foreach (int id in sectorIds)
randomSortTable[new Random(DateTime.Now.DayOfYear).Next()] = id;
return randomSortTable.OrderBy(KVP => KVP.Key).Select(KVP => KVP.Value).FirstOrDefault();
}
Причина, по которой я использую DateTime.Now.DayOfYear
в качестве начального числа, заключается в том, что я хочу выбирать один и тот же сектор ID каждый раз, когда метод выполняется в течение дня, а на следующий день я выбираю другой случайныйодин.
Это работает до некоторой степени, но это не идеально.Например, вчера утром и накануне вечером он последовательно выбирал идентификатор одного сектора, затем вчера в какой-то момент он начал выбирать другой идентификатор сектора, и сегодня он все еще использует тот же идентификатор сектора, который использовался вчера днем.
Я думал, что DateTime.Now.DayOfYear
изменится в полночь по Гринвичу (мой текущий часовой пояс), но это не так.
Может ли кто-нибудь подсказать мне, если DateTime.Now.DayOfYear
ведет себя не так, как я ожидаюк?Если да, есть ли способ изменить это так, чтобы я мог каждый день в полночь выбирать новый идентификатор Сектора из списка?