алгоритм — планирование работы c ++ симуляция, нужен совет / предложение

Я начал создавать программу на С ++ для имитации алгоритмов планирования работы, таких как FiFo и другие. Я далек от завершения, но сейчас моя главная проблема — как создать поток времени в моей программе.

Это мой основной код:

for (i = 1; i < 10; i++)
{
Time1 = clock();
//this is the alogrithm to generate poisson arrival sequence
do{
k = k + 1;
// Generate a random number between 0 and 1
// return a uniform number in [0,1].
double u = rand() / (double)RAND_MAX;
p = p * u;
}while (p > L);
A[i] = k-1;

Time2 = clock();
DT = Time2 -Time1;
TotalTime=TotalTime + DT;
cout << "  Total time  " << TotalTime
<< "  table :" << A[i]
<< "  Arrival Time  "<< TotalTime <<endl ;

Моя главная проблема:
Мои единицы измерения времени с часами состоят в том, что единицы времени, которые выводятся из функции clock (), являются «странными» числами. Должен ли я использовать другую функцию?

Результаты 10 итераций

  Total time  6.19522e+032  table :28  Arrival Time  6.19522e+032
Total time  6.19522e+032  table :29  Arrival Time  6.19522e+032
Total time  6.19522e+032  table :30  Arrival Time  6.19522e+032
Total time  6.19522e+032  table :31  Arrival Time  6.19522e+032
Total time  6.19522e+032  table :32  Arrival Time  6.19522e+032
Total time  6.19522e+032  table :33  Arrival Time  6.19522e+032
Total time  6.19522e+032  table :34  Arrival Time  6.19522e+032
Total time  6.19522e+032  table :35  Arrival Time  6.19522e+032
Total time  6.19522e+032  table :36  Arrival Time  6.19522e+032

PSЯ могу предоставить остальную часть кода, если вы хотите запустить его на своем компьютере.

0

Решение

Планирование заданий было бы намного проще, чем моделирование «дискретного события». Проверьте это учебная статья чтобы увидеть, как такие модели могут быть построены. Фреймворк в статье написан на Java (и также был реализован на Ruby), но может быть напрямую подключен к C ++.

1

Другие решения

Итак, первая точка в том, что clock () возвращает переменную clock_t, поэтому, хотя я не думаю, что она действительно сильно изменится, сделайте Time1 и Time2 типа clock_t. Что касается основного вопроса и комментариев, похоже, вы просто забыли инициализировать TotalTime в ноль, что объясняет огромные числа.

Если все выходные данные равны нулю, тогда да, вероятно, цикл работает очень быстро, но вы также можете увеличить количество десятичных разрядов, которые вы выводите, используя setprecision. Запустите следующий код, чтобы увидеть разницу, cout.setprecision (значение int) определит количество отображаемых десятичных знаков.

#include <iostream>

int main() {
double d = 1.0/3.0;

std::cout.precision(15);

std::cout << d << std::endl;

std::cout.precision(3);

std::cout << d;

return 0;
}
0

По вопросам рекламы [email protected]