| 45 | } |
| 46 | |
| 47 | int DeterministicRandom::randomInt(int min, int maxPlusOne) { |
| 48 | ASSERT(min < maxPlusOne); |
| 49 | unsigned int range; |
| 50 | if (maxPlusOne < 0) |
| 51 | range = std::abs(maxPlusOne - min); |
| 52 | else { |
| 53 | range = maxPlusOne; |
| 54 | range -= min; |
| 55 | } |
| 56 | uint64_t v = (gen64() % range); |
| 57 | int i; |
| 58 | if (min < 0 && (-static_cast<unsigned int>(min + 1)) >= v) |
| 59 | i = -static_cast<int>(-static_cast<unsigned int>(min + 1) - v) - 1; |
| 60 | else |
| 61 | i = v + min; |
| 62 | if (randLog && useRandLog) |
| 63 | fprintf(randLog, "Rint %d\n", i); |
| 64 | return i; |
| 65 | } |
| 66 | |
| 67 | int64_t DeterministicRandom::randomInt64(int64_t min, int64_t maxPlusOne) { |
| 68 | ASSERT(min < maxPlusOne); |