Opened 16 years ago
Last modified 14 years ago
#819 closed Bugs (fixed)
uniform_int<> with type's maximum availaible range error — at Initial Version
Reported by: | nobody | Owned by: | jmaurer |
---|---|---|---|
Milestone: | Component: | random | |
Version: | None | Severity: | Problem |
Keywords: | Cc: |
Description
using boost 1_33_1, MSVC 8.0 using namespace boost; using namespace std; typedef int32_t IntType;// the same bug for int8_t int16_t int64_t uniform_int<IntType> ui(numeric_limits<IntType>::min(), numeric_limits<IntType>::max()); rand48 rng; variate_generator<rand48, uniform_int<int32_t> > gen(rng, ui); IntType x = gen(); // infinite loop here If we makes range smaller or if we using unsigned types - everything is OK So if we will look to uniform_int.hpp we will see..... template<class IntType = int> class uniform_int { public: .... typedef IntType result_type; .... explicit uniform_int(IntType min = 0, IntType max = 9) : _min(min), _max(max) { ...... assert(min <= max); init(); }..... private: result_type _min, _max, _range; void init() { _range = _max - _min;// for SIGNED types and maximum available range we will receive..... of course -1 !!!!!! } ......}Also i want to draw the attention russian-speaking boost developers to the http://rsdn.ru/Forum/Message.aspx?mid=2252961&only=1
Note:
See TracTickets
for help on using tickets.