summaryrefslogtreecommitdiffhomepage
path: root/misc/examples/algorithms/random.c
diff options
context:
space:
mode:
Diffstat (limited to 'misc/examples/algorithms/random.c')
-rw-r--r--misc/examples/algorithms/random.c35
1 files changed, 16 insertions, 19 deletions
diff --git a/misc/examples/algorithms/random.c b/misc/examples/algorithms/random.c
index 9522c16d..e457d329 100644
--- a/misc/examples/algorithms/random.c
+++ b/misc/examples/algorithms/random.c
@@ -4,42 +4,39 @@
int main(void)
{
- const long long N = 10000000;
- const uint64_t seed = (uint64_t)time(NULL), range = 1000000;
+ const long long N = 10000000, range = 1000000;
+ const uint64_t seed = (uint64_t)time(NULL);
crand_t rng = crand_init(seed);
-
- long long sum;
- clock_t diff, before;
+ clock_t t;
printf("Compare speed of full and unbiased ranged random numbers...\n");
- sum = 0;
- before = clock();
+ long long sum = 0;
+ t = clock();
c_forrange (N) {
- sum += (uint32_t)crand_u64(&rng);
+ sum += (int32_t)crand_u64(&rng);
}
- diff = clock() - before;
+ t = clock() - t;
printf("full range\t\t: %f secs, %lld, avg: %f\n",
- (double)diff/(double)CLOCKS_PER_SEC, N, (double)(sum/N));
+ (double)t/CLOCKS_PER_SEC, N, (double)(sum/N));
crand_uniform_t dist1 = crand_uniform_init(0, range);
rng = crand_init(seed);
sum = 0;
- before = clock();
+ t = clock();
c_forrange (N) {
sum += crand_uniform(&rng, &dist1); // unbiased
}
- diff = clock() - before;
+ t = clock() - t;
printf("unbiased 0-%lld\t: %f secs, %lld, avg: %f\n",
- (long long)range, (double)diff/CLOCKS_PER_SEC, N, (double)(sum/N));
+ range, (double)t/CLOCKS_PER_SEC, N, (double)(sum/N));
sum = 0;
rng = crand_init(seed);
- before = clock();
+ t = clock();
c_forrange (N) {
- sum += (int64_t)(crand_u64(&rng) % (range + 1)); // biased
+ sum += (int32_t)crand_u64(&rng) % (range + 1); // biased
}
- diff = clock() - before;
- printf("biased 0-%" PRIu64 " \t: %f secs, %lld, avg: %f\n",
- (long long)range, (double)diff/CLOCKS_PER_SEC, N, (double)(sum/N));
-
+ t = clock() - t;
+ printf("biased 0-%lld \t: %f secs, %lld, avg: %f\n",
+ range, (double)t/CLOCKS_PER_SEC, N, (double)(sum/N));
}