diff options
author | EliteTK <tomasz.kramkowski@gmail.com> | 2014-09-06 18:33:33 +0100 |
---|---|---|
committer | EliteTK <tomasz.kramkowski@gmail.com> | 2014-09-06 18:33:33 +0100 |
commit | 0a23128c376540cd139dde19a1f09ae40617e670 (patch) | |
tree | 02b07925f74eb6fddf0b8e7a94fbaad4fc028422 /randtest.c | |
parent | b60441758f9832a67f60e51a4ee92d16b166b9fb (diff) | |
download | c-stuff-0a23128c376540cd139dde19a1f09ae40617e670.tar.gz c-stuff-0a23128c376540cd139dde19a1f09ae40617e670.tar.xz c-stuff-0a23128c376540cd139dde19a1f09ae40617e670.zip |
Latest 'stuff'
Diffstat (limited to 'randtest.c')
-rw-r--r-- | randtest.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/randtest.c b/randtest.c new file mode 100644 index 0000000..06a71de --- /dev/null +++ b/randtest.c @@ -0,0 +1,35 @@ +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <time.h> + +#define FROM 0 +#define TO 9 + +int8_t randrange(int8_t from, int8_t to) +{ + int base_random = rand(); + if (RAND_MAX == base_random) return randrange(from, to); + int range = to - from, + remainder = RAND_MAX % range, + bucket = RAND_MAX / range; + if (base_random < RAND_MAX - remainder) { + return from + base_random/bucket; + } else { + return randrange(from, to); + } +} + +int main(int argc, char **argv) +{ + srand(time(NULL)); + int r; + uint16_t *amounts = calloc(sizeof(uint16_t), (TO - FROM + 1)); + for (int i = 0; i < 1000; i++) + amounts[randrange(FROM, TO) - FROM]++; + + for (int i = 0; i < TO - FROM + 1; i++) + printf("%d: %d\n", i, amounts[i]); + + return 0; +} |