Get a random number properly:
int random( int min, int max )
{
int N = max - min + 1;
int K = RAND_MAX - (RAND_MAX % N);
int n;
do n = rand(); while (n >= K);
return (n % N) + min;
}
This function cannot give you random values in ranges with magnitude greater than RAND_MAX
, and RAND_MAX
is often fairly small (32,767). If you need a greater range, let us know.
Thereafter, apply the function to each element of your array:
void randomize_array( int a[], int n, int min, int max )
{
while (n--) a[n] = random( min, max );
}
Keep separate operations separate. Randomizing an array has nothing to do with printing it. Print separately:
void print_array( int a[], int n )
{
if (!n) return;
printf( "%d", a[0] );
for (int i = 1; i < n; i++)
printf( " %d", a[i] );
printf( "\n" );
}
Putting it all together:
#define sizeof_array(A) (sizeof((A)) / sizeof((A)[0]))
int a[20];
randomize_array( a, sizeof_array(a), -10, 10 );
print_array( a, sizeof_array(a) );