2013-01-20 2 views
0

Я пытаюсь сгенерировать некоторые тестовые данные через python. (мое приложение не находится на питоне, но python кажется простым и сжатым для генерации данных). Я хочу имитировать типичный рабочий день сотрудника, создавая «временные интервалы» действий. Ниже функция должна генерировать «n» количество временных интервалов между start и end (с некоторым случайным промежутком между кажущимся естественным) с total (total_hrs).Генерация тестовых данных: имитирующий рабочий день сотрудника

slots = [] #list of slot == {start:<>, end:<>} 
def time_slot(start, end, n, total_hrs): 
    # generate n non-overlapping time slot between start and end (with some random gap between to seem natural) 

print (slots) 

Например:

time_slot("1/1/2013 9:00", "1/1/2013 17:00", 3, 8) 

[ {start: "1/1/2013 9:00", end: "1/1/2013 10:30"}, ...., {start: "1/1/2013 14:00", end: "1/1/2013 16:44"}] 

#total time == 8 
+1

Что ваш вопрос? –

+0

извините за то, что вы неоднозначны. Я не разбираюсь в python и искал указатели/примеры, чтобы написать эту функцию для генерации временных интервалов. надеюсь, что std-библиотека (время, случайность) и средства обработки списков облегчают эту задачу (которой я не подвергаюсь). Я мог бы подумать об этом с кучей циклов, но надеюсь, что опытный пользователь python может помочь мне увидеть лучший способ сделать это в python. – bsr

+0

Ну, я думаю, для одного цикла. Пронумеруйте его n раз и создайте слот и разрыв для каждого. Готово. –

ответ

1

Я могу дать схему того, что я хотел бы сделать:

  1. рисовать n случайных чисел
  2. s = sum all numbers
  3. конвертировать total_hrs в total_min
  4. сделать работу-ломти: chunks = [c/s * total_min for c in numbers]
  5. известково разница между end - start и total_hrs
  6. сделать те же шаги 1 - 4 раз эту разницу, чтобы получить пробелы (использование п + 1, чтобы обеспечить зазор в то начиная
  7. Наконец конвертировать все куски в datetime.timedelta и добавить timedelta последовательно начать (уже в начале вы должны были конвертированы start и end в datetime.date)
+0

+1 спасибо за указание доступности datetime.timedelta, что упрощает добавление длительности – bsr

Смежные вопросы