tfprng: expose range formula in form of macros to build custom range generators.

This commit is contained in:
Andrey Rys 2019-04-09 18:14:17 +07:00
parent acf1671280
commit 65a3fc67f2
No known key found for this signature in database
GPG Key ID: ED732729967CDBC5
2 changed files with 2 additions and 1 deletions

View File

@ -85,7 +85,7 @@ TFNG_UNIT_TYPE tfng_prng_range_r(void *sdata, TFNG_UNIT_TYPE s, TFNG_UNIT_TYPE d
{
TFNG_UNIT_TYPE c = tfng_prng_random_r(sdata);
if (d <= s) return s;
return s + c / ((TFNG_UNIT_TYPE)~0 / (d - s + 1) + 1);
return TFNG_PRNG_RANGE(c, TFNG_UNIT_TYPE, s, d);
}
TFNG_UNIT_TYPE tfng_prng_range(TFNG_UNIT_TYPE s, TFNG_UNIT_TYPE d)

View File

@ -6,6 +6,7 @@
#define TFNG_PRNG_KEY_SIZE TFNG_KEY_SIZE
#define TFNG_PRNG_SIZE_UNIT TFNG_SIZE_UNIT
#define TFNG_PRNG_RANGE(C, T, S, D) (S + C / ((T)~0 / (D - S + 1) + 1))
size_t tfng_prng_datasize(void);
void tfng_prng_seedkey_r(void *sdata, const void *skey);