Ne.app NeANT
The Ne.app NeANT User module of the NeANT distribution.
teller.cpp
Go to the documentation of this file.
1
29#include <queue>
30#include <iostream>
31#include <vector>
32
33#include <teller.h>
34
35// A very unsatisfactory, but very portable implementation
36// of a linear congruential pseudorandom number generator.
37// (Apologies to D. Lehmer, D. Knuth, R. Sedgewick, et al.)
38static unsigned long int lcg_seed = 0;
39inline int lcg_rand (int n)
40{
41 lcg_seed = ((lcg_seed * 11321) + 1) % 32575;
42 return (int) (((double) lcg_seed / 32575.0) * n);
43}
44
45int main ()
46{
47 const int numberOfTellers = 5;
48 const int numberOfMinutes = 60;
49 double totalWait = 0;
50 int numberOfCustomers = 0;
51
52 std::vector<Teller> teller (numberOfTellers);
53 std::queue<Customer> line;
54
55 for (int t = 0; t < numberOfMinutes; t++) {
56 if (lcg_rand (10) < 9)
57 line.push (Customer (t));
58
59 for (int i = 0; i < numberOfTellers; i++) {
60 if (teller[i].isFree () && !line.empty ()) {
61 Customer& frontCustomer = line.front ();
62 numberOfCustomers++;
63 totalWait += t - frontCustomer.arrivalTime;
64 teller[i].addCustomer (frontCustomer);
65 line.pop ();
66 }
67 }
68 }
69
70 std::cout << "average wait: "
71 << (totalWait / numberOfCustomers) << std::endl;
72
73 return 0;
74}
75
76
77
78
#define i
Definition 17.names.cpp:126
#define t
Definition 17.names.cpp:136
#define line
Definition 17.names.cpp:490
#define n
Definition 17.names.cpp:130
int arrivalTime
Definition teller.h:39
int lcg_rand(int n)
Definition teller.cpp:39
int main()
Definition teller.cpp:45