Как сформировать временной диапазон (8.30-10.30)

  • Автор темы Автор темы Mutant
  • Дата начала Дата начала

Mutant

Client
Регистрация
19.09.2014
Сообщения
201
Реакции
36
Баллы
28
Необходимо рандомно брать время для публикации в диапазоне, скажем с 8.30 до 10.30 с кратностью в 5 минут. Сейчас это реализовано через список в котором в каждой строчке новое значение времени
8.30
8.35
8.40
...
10.30
и рандомом берется строка со значением из списка.
Есть ли более красивое решение? Желательно уйти от списка совсем.
 
забейте данные во внитренний список, чтобы не использовать доп txt файл. Чем реализация плоха? Работает же
 
В реальности диапазонов четыре таких, это уже четыре списка, четыре файла. Просто думал может не знаю про красивый вариант :-)
Делал еще вариант с кучей if -ов, да от списков уходишь, но зоопарк еще больший выходит.
Спасибо за ответ.
 
В реальности диапазонов четыре таких, это уже четыре списка, четыре файла. Просто думал может не знаю про красивый вариант :-)
Как вариант, можно через экшен "Обработка списка" > Spintax
Код:
Развернуть Свернуть Копировать
{8.30|8.35|8.40|8.45|8.50|8.55|9.00}
Делал еще вариант с кучей if -ов, да от списков уходишь, но зоопарк еще больший выходит.
Тогда уж лучше использовать Switch, а не If.
Поиграйтесь с этими экшенами (Spintax и Switch) и подберите оптимальный для вас вариант.
 
В общий код добавить следующее.
Код:
Развернуть Свернуть Копировать
    public static class Helper
    {
        private static List<string> _range1 = new List<string>
        {
            "8.30",
            "8.35",
            "8.40"
        };

        private static List<string> _range2 = new List<string>
        {
            "9.30",
            "9.35",
            "9.40",
            "9.45"
        };

        private static List<string> _range3 = new List<string>
        {
            "10.30",
            "10.35",
        };

        private static List<string> _range4 = new List<string>
        {
            "11.30",
            "11.35",
            "11.40",
            "11.45",
            "11.50"
        };

        /// <summary>
        /// Взять рандом время из списка
        /// </summary>
        /// <param name="rangeNum">номер списка</param>
        /// <returns>рандом время</returns>
        public static string GetRandom(int rangeNum)
        {
            switch (rangeNum)
            {
                case 1:
                {
                    var max = _range1.Count-1;
                    var r = new Random().Next(0, max);

                    return _range1[r];
                }

                case 2:
                {
                    var max = _range2.Count-1;
                    var r = new Random().Next(0, max);

                    return _range2[r];
                }

                case 3:
                {
                    var max = _range3.Count-1;
                    var r = new Random().Next(0, max);

                    return _range3[r];
                }

                case 4:
                {
                    var max = _range4.Count-1;
                    var r = new Random().Next(0, max);

                    return _range4[r];
                }

                default: return "";
            }
        }
    }



Списков можно насоздавать хоть сколько, также как и значений в них.

Главное не забыть добавить по аналогии в switch.

Ну а дальше в экшене C# кода.



Смысл всего это.
Есть скажем 4 списка, вызываем метод GetRandom(), в качестве параметра передаем номер списка.
На выходе получаем рандомное значение из списка.
 

Вложения

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)