Random Number Generation r0 (See the current copy)

#include <sys/time.h> #include <inttypes.h>

 #include <unistd.h>
 #include <stdlib.h>
 #include <stdio.h>

 uint32_t ms_to_run(const char *pathname) {
 	struct timeval start, finish;
 	uint32_t ret;

 	gettimeofday(&start, NULL);
 	system(pathname);
 	gettimeofday(&finish, NULL);

 	if (finish.tv_usec < start.tv_usec) {
 		ret = finish.tv_usec + 1000000 - start.tv_usec;
 	} else {
 		ret = finish.tv_usec - start.tv_usec;
 	}

 	return(ret);
 }

 int generate_random_values(unsigned char *destarray, int destarray_len, int freq) {
 	uint32_t x;
 	unsigned char val;
 	int i;

 	for (i = 0; i < destarray_len; i++) {
 		if ((i % freq) == 0) {
 			x = ms_to_run("/bin/true");
 			srand((x << 14) + rand());
 		}

 		if (destarray) {
 			val = (int) (256.0 * rand() / (RAND_MAX + 1.0));
 			destarray[i] = val;
 		}
 	}

 	return(0);
 }

 int main(void) {
 	char buf[1024 * 4];
 	int ret;

 	ret = generate_random_values(buf, sizeof(buf), 3);
 	if (ret < 0) {
 		fprintf(stderr, "Error generating random numbers, aborting.\n");
 		return(EXIT_FAILURE);
 	}

 	fwrite(buf, sizeof(buf), sizeof(buf[0]), stdout);

 	return(EXIT_SUCCESS);
 }