int_rand(int n) { if ( n <= 0 || n > RAND_MAX ) throw domain_error("Argument out of range"); const int bucket_size = RAND_MAX / n; int a; do { a = rand() / bucket_size; } while ( a >= n ); return a; }