Gary said:
Hi
I need help to generate some random numbers between 2 and 8.
#include <cstdlib>
using std::rand;
the following was out of my range,
int main() {
for (int i = 0; i < 50; i++){
int x = (int(rand())/444489786)*8;
cout << x << '\t' << endl;
}
}
it can be any quality random number.
thanks
This is one way of doing it:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
template<typename T>
class Random {
public:
Random(T min_, T max_);
T operator()(T min_, T max_); ///< Set new range for random numbers,
and return a random number.
T operator()(); ///< Return a random number.
private:
T _min, _max;
T _delta;
};
template<typename T>
inline Random<T>::Random(T min_, T max_)
:_min(min_),
_max(max_){
srand(time(0));
srand(time(0));
_delta = RAND_MAX / (_max - _min);}
template<typename T>
inline T Random<T>:
perator()(T min_, T max_){
_min = min_;
_max = max_;
_delta = RAND_MAX / (_max - _min);
return(operator()());}
template<typename T>
inline T Random<T>:
perator()(){
return((rand() / _delta) + _min);}
int main(){
Random<float> randFloat(-10, -20);
cerr << "5 random floating point numbers between -10 and -20: ";
for(int i = 0; i < 5; i++)
cerr << fixed << randFloat() << " ";
cerr << endl;
randFloat(-100, 100);
cerr << "5 random floating point numbers between -100 and 100: ";
for(int i = 0; i < 5; i++)
cerr << fixed << randFloat() << " ";
cerr << endl;
Random<int> randInt(20000, 10000);
cerr << "5 random integers between 20000 and 10000: ";
for(int i = 0; i < 5; i++)
cerr << fixed << randInt() << " ";
cerr << endl;
randInt(-10, 10);
cerr << "5 random integers between -10 and 10: ";
for(int i = 0; i < 5; i++)
cerr << fixed << randInt() << " ";
cerr << endl;
return 0;}
lars@ibmr52:~/programming/c$ g++ -g -Wall random.cpp -o random &&
../random
5 random floating point numbers between -10 and -20: -15.719680
-10.247149 -10.654663 -16.673820 -13.213199
5 random floating point numbers between -100 and 100: 63.869286
-77.031998 -25.940384 -4.096813 -49.285671
5 random integers between 20000 and 10000: 14281 19753 19346 13327
16787
5 random integers between -10 and 10: 6 -8 -3 -1 -5