diff options
Diffstat (limited to 'generators.c')
-rw-r--r-- | generators.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/generators.c b/generators.c index c4a70a0..2e31b72 100644 --- a/generators.c +++ b/generators.c @@ -38,10 +38,26 @@ static void generate_constant(int *buffer, size_t size) for (size_t i = 0; i < size; i++) buffer[i] = 42; } +static void generate_sorted_noise(int *buffer, size_t size) +{ + int noisemax = size / 4; + int noiseoff = size / 8; + + srandom(1); + for (size_t i = 0; i < size; i++) { + int noise = 0; + if (random() < 0.2 * RAND_MAX) { + noise = random() % noisemax - noiseoff; + } + buffer[i] = i + noise; + } +} + const struct generator generators[] = { - { .name = "random", .func = generate_random }, - { .name = "sorted", .func = generate_sorted }, - { .name = "reverse", .func = generate_reverse }, - { .name = "constant", .func = generate_constant }, + { .name = "random", .func = generate_random }, + { .name = "sorted", .func = generate_sorted }, + { .name = "reverse", .func = generate_reverse }, + { .name = "constant", .func = generate_constant }, + { .name = "sorted+noise", .func = generate_sorted_noise }, { 0 } }; |