Generate a random integer in [0..limit). */
| 509 | |
| 510 | /* Generate a random integer in [0..limit). */ |
| 511 | uint64_t gen_rand64_range(sfmt_t *ctx, uint64_t limit) { |
| 512 | uint64_t ret, above; |
| 513 | |
| 514 | above = KQU(0xffffffffffffffff) - (KQU(0xffffffffffffffff) % limit); |
| 515 | while (1) { |
| 516 | ret = gen_rand64(ctx); |
| 517 | if (ret < above) { |
| 518 | ret %= limit; |
| 519 | break; |
| 520 | } |
| 521 | } |
| 522 | return ret; |
| 523 | } |
| 524 | |
| 525 | #ifndef ONLY64 |
| 526 | /** |
no test coverage detected