rand();
But in rand() function, we can't giving minimum or maximum number. This function return 0 between RAND_MAX value.
And when you call rand() function, you will get same thing every time.
Example, if we try this code;
#include <stdlib.h>
#include <iostream>
using namespace std;
int main ()
{
cout<<rand()<<endl;
cout<<rand();
return 0;
}
Return will be same number. But if we use srand() function, when we call rand() it's will return different number;int main ()
{
srand(time(0));
cout<<rand()<<endl;
cout<<rand();
return 0;
}
Now, we want giving max and min numbers.
double rmax,rmin,d,final; rmin=20; rmax=100; int r=rand(); d=rmax-rmin; final=rmin+(d*(float)r/RAND_MAX);
Let's look to code; in example, out RAND_MAX value is 1000
First we create our values. In this example rmax=100, rmin=20.
And we giving rand() to int r. Let's sat it's 250.
Now our diffence (d) is equal to: 100-20=80
And final;
20+(80*(250/1000)) =
20+(80*0.25) =
20+20=
40
In this code, final number can't be smaller than rmin, and can't be bigger than rmax. And we can give float number or under zero numbers.
And finally, it's our class;
#include <stdlib.h>
#include <iostream>
using namespace std;
class randomengine{
public:
int r;
double d,s;
void init(){srand(time(0));}
double number(double rmax,double rmin){
r=rand();
d=rmax-rmin;
s=rmin+(d*(float)r/RAND_MAX);
return s;
}
};
randomengine rnd;
int main ()
{
rnd.init();
cout<<(int)rnd.number(20,100)<<endl;
cout<<rnd.number(0.5,0.8);
return 0;
}
Again sorry for bad english..