Will this generate psuedo random numbers efficiently?
Idea: I want it to cycle through a user defined number of numbers (n_total) for as long as it takes to reach a set criteria of numbers that are less than 0.1 (n_desire)? I divide by RAND_MAX to always get a number between 0 and 1.
I seed with time and get different results on different runs...
Comments? Ways to make it better?
Code:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <time.h>
int random_num(int n_total, int n_desire);
int random_num(int n_total, int n_desire)
{
int i, cap; /* counter */
double j; /* Stores the random numbers. */
unsigned int iseed = (unsigned int)time(NULL);
srand(iseed);
cap = 0;
while(1){
for(i = 0; i < n_total; ++i){
/* Generate a random number between 0 and 1. */
j = (double)(rand()/((double)RAND_MAX + 1));
printf ("The random number generated is %lf \n", j);
if(j <= .1){
printf("---> Value of random number is less than");
printf("---> or equal .1 with value of %lf.\n", j);
cap += 1;
if(cap == n_desire){
// we have the desired number of numbers we wanted.
break;
}
}
}
if(cap == n_desire) break;
}
return 0;
}
int main(void){
random_num(10, 5);
return 0;
}