I'm no matemetician but it looks like all this:
Code:
x=rand()/(double)RAND_MAX; //Generate Random Number between 0 and 1
printf("The random numbers are: %d: %f\n", i,x);
if ((x>=0)&&(x<(N/100))) //Increment bin value by one for each 'hit' from random number
{
databins[0]=databins[0]++;
}
else if((x>=(N/100))&&(x<((N/100)*2)))
{
databins[1]=databins[1]++;
}
else if((x>=((N/100)*2))&&(x<((N/100)*3)))
{
databins[2]=databins[2]++;
}
else if((x>=((N/100)*3))&&(x<((N/100)*4)))
{
databins[3]=databins[3]++;
}
else if((x>=((N/100)*4))&&(x<((N/100)*5)))
{
databins[4]=databins[4]++;
}
else if((x>=((N/100)*5))&&(x<((N/100)*6)))
{
databins[5]=databins[5]++;
}
else if((x>=((N/100)*6))&&(x<((N/100)*7)))
{
databins[6]=databins[6]++;
}
else if((x>=((N/100)*7))&&(x<((N/100)*8)))
{
databins[7]=databins[7]++;
}
else if((x>=((N/100)*8))&&(x<((N/100)*9)))
{
databins[8]=databins[8]++;
}
else if((x>=((N/100)*9))&&(x<N/100))
{
databins[9]=databins[9]++;
}
}
Can be reduced to...
Code:
x = rand()/(double)RAND_MAX;
printf("The random numbers are: %d: %f\n", i,x);
databin[(int)(x * 10)]++;
Even more interestingly, since the distribution would be the same for any given multiplier/divisor, you could simplify it even further, getting this...
Code:
int x;
x = rand()%10;
printf("The random numbers are: %d: %f\n", i,((float) x) / 10.0));
databin[x]++;