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

Mutant

Client
Регистрация
19.09.2014
Сообщения
187
Благодарностей
36
Баллы
28
Необходимо рандомно брать время для публикации в диапазоне, скажем с 8.30 до 10.30 с кратностью в 5 минут. Сейчас это реализовано через список в котором в каждой строчке новое значение времени
8.30
8.35
8.40
...
10.30
и рандомом берется строка со значением из списка.
Есть ли более красивое решение? Желательно уйти от списка совсем.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
забейте данные во внитренний список, чтобы не использовать доп txt файл. Чем реализация плоха? Работает же
 

Mutant

Client
Регистрация
19.09.2014
Сообщения
187
Благодарностей
36
Баллы
28
В реальности диапазонов четыре таких, это уже четыре списка, четыре файла. Просто думал может не знаю про красивый вариант :-)
Делал еще вариант с кучей if -ов, да от списков уходишь, но зоопарк еще больший выходит.
Спасибо за ответ.
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 104
Баллы
113
В реальности диапазонов четыре таких, это уже четыре списка, четыре файла. Просто думал может не знаю про красивый вариант :-)
Как вариант, можно через экшен "Обработка списка" > Spintax
Код:
{8.30|8.35|8.40|8.45|8.50|8.55|9.00}
Делал еще вариант с кучей if -ов, да от списков уходишь, но зоопарк еще больший выходит.
Тогда уж лучше использовать Switch, а не If.
Поиграйтесь с этими экшенами (Spintax и Switch) и подберите оптимальный для вас вариант.
 

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
823
Баллы
93
В общий код добавить следующее.
Код:
    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(), в качестве параметра передаем номер списка.
На выходе получаем рандомное значение из списка.
 

Вложения

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