Пусть будет так, через сутки повторяйте
// 8 раз в промежутке времени с 6 утра до 23 вечера и 2 раза с 23 вечера до 6 утра.
var now = DateTime.Now;
var startPeriod = (23 - 6) * 60;
var startList = new List<int>();
while (startList.Count < 8)
{
var val = RandomNumberGenerator.GetInt32(0, startPeriod);
if (!startList.Contains(val))
startList.Add(val);
}
var runList = startList.OrderBy(x => x).Select(item => new DateTime(now.Year, now.Month, now.Day).AddMinutes(6 * 60 + item)).ToList();
startList.Clear();
var endPeriod = (1 + 6) * 60;
while (startList.Count < 2)
{
var val = RandomNumberGenerator.GetInt32(0, endPeriod);
if (!startList.Contains(val))
startList.Add(val);
}
runList.AddRange(startList.OrderBy(x => x).Select(item => new DateTime(now.Year, now.Month, now.Day).AddMinutes(23 * 60 + item)));
;