Создаем наследника от QThread
В конструкторе для таймера определяем случайное время от msec_min до msec_max
В методе exec запускаем таймер и обрабатываем его срабатывания в методе timerEvent
В timerEvent проверяем что сработал наш таймер и что возведен флаг work
В условии проверяем 40% шанс и что покупателей приходило меньше max_buyers
После добавляем к счетчику единицу, задаем какое-то рандомное число от 1 до 3 и логируем, отсылая сигнал threadLog
Далее вызывается if (data.deps[id] > 0) { и мне дальше не хочется вникать