| 144 | |
| 145 | |
| 146 | vector<int> getRandomSubRange(int start, int endExcl, int numElems) { |
| 147 | DEMAND( endExcl >= start ); |
| 148 | DEMAND( numElems >= 1 ); |
| 149 | DEMAND( numElems <= endExcl - start ); |
| 150 | |
| 151 | // shuffle entire range (advances RNG on every node, identically) |
| 152 | vector<int> range = getRange(start, endExcl); |
| 153 | std::shuffle(range.begin(), range.end(), RNG); |
| 154 | |
| 155 | // return first subrange |
| 156 | return vector<int>(range.begin(), range.begin() + numElems); |
| 157 | } |
| 158 | |
| 159 | |
| 160 | vector<qreal> getRandomProbabilities(int numProbs) { |
no test coverage detected