#include #include #include #include /* This program simulates a B/B/1 queue: U(t+1) = max[U(t) - S(t), 0] + A(t) */ main(int argc, char *argv[]){ int Numits, U, t; long U_sum; double lambda, mu, exact, X, U_av; if (argc < 4) { printf("\nUsage: ./a.out lambda mu Numits\n"); exit(0); } lambda = (float) atof(argv[1]); mu = (float) atof(argv[2]); Numits = (int) atoi(argv[3]); printf("\n lambda = %f, mu = %f, Numits = %d", lambda, mu, Numits); U=0; U_av=0.0; U_sum = 0; for (t=0; t< Numits; t++) { /* tally averages */ U_sum += U; /*serve data*/ if (U > 0) { X = rand()*1.0/RAND_MAX; if (X < mu) U = U - 1; } /* get arrivals */ X = rand()*1.0/RAND_MAX; if (X < lambda) U = U + 1; } exact = (lambda)*(1.0 - lambda)/(mu - lambda); U_av = U_sum/(1.0*Numits); printf("\n U_av = %f", U_av); printf("\n exact = %f", exact); printf("\n U(%d) = %d", Numits - 1, U); printf("\n U/Numits = %f", U*1.0/Numits); printf("\n\n"); return 0; }