… | |
… | |
365 | } |
365 | } |
366 | |
366 | |
367 | void seed (uint32_t seed); |
367 | void seed (uint32_t seed); |
368 | uint32_t next (); |
368 | uint32_t next (); |
369 | |
369 | |
370 | // uniform distribution, 0 .. num - 1 |
370 | // uniform distribution, 0 .. max (0, num - 1) |
371 | uint32_t operator ()(uint32_t num) |
371 | uint32_t operator ()(uint32_t num) |
372 | { |
372 | { |
373 | return is_constant (num) |
373 | return is_constant (num) |
374 | ? (next () * (uint64_t)num) >> 32U |
374 | ? (next () * (uint64_t)num) >> 32U |
375 | : get_range (num); |
375 | : get_range (num); |