So you want random numbers with negative values... How do you get them? This is a simple method to do so.

#include <iostream>
#include <time.h>

using namespace std;

/* define number of elements in the array */
const int NumElements = 16383;
const int Range = 33766;

int RandNums[NumElements]; // An array of elements to hold random numbers

	/* initialize random generator */
  srand ( time(NULL) );
	int count; //declare count before it can be used
	for(count = 0; count < (NumElements - 1); count++)

  	/* Assign a value to the array */
		RandNums[count] = rand()%Range;
		if (RandNums[count] > Range/2)
			//If the value is greater than the cut off point, subtract it from the cut-off point and multiply by negative 1.
			RandNums[count] = RandNums[count] - 16383;
			RandNums[count] = RandNums[count] * -1;
		/* Print results */
		cout << RandNums[count] << endl;
	return 0;

This is terrible code, why would you make this simple task so complicated....just create a random number...half the time multiply by negative 1(choose this randomly)...that way your range doesn't shrink and you get a perfectly uniform distribution.

The article starter has earned a lot of community kudos, and such articles offer a bounty for quality replies.