Fixing one off in the uniform_on_restart bug.#207
Conversation
…s for uniform_on_restart
|
This fix looks good to me. As you pointed out, I didn't see that the The same issue actually is also present for floating point, although in a different form: This will never reach the upper bound, as the division will never reach one because This seems fine, and I think any other fix would require an inclusive version of the random number generator, which would be more work. |
|
Updated for uniform_on_researt for float. Thank @Dekker1 |
|
Thanks for the contribution, and sorry this sat open for so long. I reviewed this against the current I’m closing this PR as superseded by PR #214 . Thank you for finding and fixing the endpoint bug. |
This pull request makes a small but important fix to the random value assignment logic in the
gecode/flatzinc/flatzinc.cppfile. The change ensures that the generated random integer values can include the upper bound of the specified range, correcting an off-by-one error. This is happened becasueRnd _randominput domain is[lower_bound, upper_bound)and+ 1to correct set to[lower_bound, upper_bound], and it is effect touniform_on_restartconstraints.(range.second - range.first)to(range.second - range.first + 1).