 	h_keys = (K*) malloc(max_num_elements * sizeof(K));
 	h_keys_result = (K*) malloc(max_num_elements * sizeof(K));
 
-	// Generate random keys 
+	// Generate random keys
+	long long banded_mask = (1ll << g_banded_bits) - 1;
 	for (int k = 0; k < max_num_elements; k++) {
 		RandomBits<K>(h_keys[k], g_entropy_reduction);
+		h_keys[k] &= (long long) banded_mask;
 	}
 	
 	// Allocate enough device memory for the biggest problem

int  g_entropy_reduction = 0;
bool g_regen;
bool g_small_sorting_enactor;


/******************************************************************************

	printf("\n");
	printf("[\t--entropy-reduction=<level>\tSpecifies the number of bitwise-AND'ing\n");
	printf("\t\t\titerations for random key data.  Default = 0, Identical keys = -1\n");
	printf("\n");
	printf("[\t--banded-bits=<level>\tSpecifies the number of non-zero, lower-order bits\n");
	printf("\t\t\tDefault = -1 (all non-zero)\n");
	printf("\n");
	printf("[\t--regen\tGenerates new random numbers for every problem size \n");
	printf("\t\t\tin <num-elements-listfile>\n");
