aboutsummaryrefslogtreecommitdiff
path: root/misc.c
blob: 58c4fb7d8a1f5385cc30956c0f7dd7f24d6c025d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/*
 * misc.c: Miscellaneous helpful functions.
 */

#include <assert.h>
#include <stdlib.h>

#include "puzzles.h"

int rand_upto(int limit)
{
    unsigned long divisor = RAND_MAX / (unsigned)limit;
    unsigned long max = divisor * (unsigned)limit;
    unsigned long n;

    assert(limit > 0);

    do {
        n = rand();
    } while (n >= max);

    n /= divisor;

    return (int)n;
}