I am c++ student and i am working on creating a random number generator by myself. I know about library functions but i want to make one myself. Here is the function.It just selects a possible number within a defined range. Problems are listed below. Any help would be appreciated.Please help any suggestions or tricks anything. I am making this for about 2 months.
int rn(int lowerlt,int upperlt)
{
/**
This function returns a random number generated using loops.
I have tried to generate a random number by taking an integer array and storing all the possible values within the defined
range in the calling part. The theory is that a variable named pointer starts getting greater and breaks the main loop
when the seed taken from system time becomes equal or greater than the pointer.
MAIN PROBLEMS:-
-The problem is that the seed which is system time is very predictable and it is very same most times which lessens the degree of randomness.
-It also takes time more than usual which is undesirable(about 10 secs).
-If range is very large then degree of randomness is very less and results are predictable.
*But over short ranges results are very effective.
I want to make it effective for big ranges.
**/
const int size=upperlt-lowerlt; //Constant size of the integer array.
int ar[size]; //Array to store all possible values within defined range.
int i,x,ret; //Variables to control loops and return value.
long pointer=0; //pointer variable. The one which breaks the main loop.
//Loop to initialize the array with possible values..
for(i=0,x=lowerlt;x<=upperlt;i++,x++)
ar[i]=x;
long seed=time(0);
//Main loop . To find the random number.
for(i=0;pointer<=seed;i++,pointer++)
{
ret=ar[i];
if(i==size-1)
{
for(;i>=0;i--) //Reverse loop.
{
ret=ar[i];
}
}
}
return ret; //The return statement .
}
Aucun commentaire:
Enregistrer un commentaire