def simulation(num_seconds, pages_per_minute):

    labprinter = Printer(pages_per_minute)
    print_queue = Queue()
    waiting_times = []

    for current_second in range(num_seconds):

        # check if new task is generated
        if new_print_task():
            task = Task(current_second)
            print_queue.enqueue(task)

        # feed queue to printer
        if (not labprinter.busy()) and (not print_queue.isEmpty()):
            nexttask = print_queue.deque()
            waiting_times.append(nexttask.waitTime(current_second))
            labprinter.startNext(nexttask)

        labprinter.tick()

    average_wait = sum(waiting_times) / len(waiting_times)
    print("The average wait time is %f" % average_wait)