cpu: Fix state transition bug in the traffic generator
The traffic generator used to incorrectly determine the next state in when state 0 had a non-zero probability. Due to the way the next transition was determined, state 0 could never be entered other than as an initial state. This changeset updates the transitition() method to correctly handle such cases and cases where the transition matrix is a 1x1 matrix.
This commit is contained in:
parent
53a0597805
commit
fc6f569d94
1 changed files with 6 additions and 5 deletions
|
@ -324,13 +324,14 @@ TrafficGen::StateGraph::transition()
|
|||
// determine next state
|
||||
double p = random_mt.gen_real1();
|
||||
assert(currState < transitionMatrix.size());
|
||||
double cumulative = transitionMatrix[currState][0];
|
||||
size_t i = 1;
|
||||
while (p < cumulative && i != transitionMatrix[currState].size()) {
|
||||
double cumulative = 0.0;
|
||||
size_t i = 0;
|
||||
do {
|
||||
cumulative += transitionMatrix[currState][i];
|
||||
++i;
|
||||
}
|
||||
enterState(i);
|
||||
} while (cumulative < p && i < transitionMatrix[currState].size());
|
||||
|
||||
enterState(i - 1);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
Loading…
Reference in a new issue