aboutsummaryrefslogtreecommitdiffstats
path: root/randtest.c
diff options
context:
space:
mode:
authorEliteTK <tomasz.kramkowski@gmail.com>2014-09-06 18:33:33 +0100
committerEliteTK <tomasz.kramkowski@gmail.com>2014-09-06 18:33:33 +0100
commit0a23128c376540cd139dde19a1f09ae40617e670 (patch)
tree02b07925f74eb6fddf0b8e7a94fbaad4fc028422 /randtest.c
parentb60441758f9832a67f60e51a4ee92d16b166b9fb (diff)
downloadc-stuff-0a23128c376540cd139dde19a1f09ae40617e670.tar.gz
c-stuff-0a23128c376540cd139dde19a1f09ae40617e670.tar.xz
c-stuff-0a23128c376540cd139dde19a1f09ae40617e670.zip
Latest 'stuff'
Diffstat (limited to 'randtest.c')
-rw-r--r--randtest.c35
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;
+}