diff options
Diffstat (limited to 'misc/examples/algorithms/random.c')
| -rw-r--r-- | misc/examples/algorithms/random.c | 35 |
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)); } |
