RANDOM NUMBER GENERATION

How can I generate a random matrix of order m by n using rand() in C++ with a specified range?

rand() is only a pseudo random number generator (PRNG) and not true random - this isn’t a problem in a lot of applications but IMO you should get in the habit of thinking about it.

anyway to seed the PRNG so that it comes up with a different sequence each time you run the program the following is a commonly used approach…

    #include <time.h>
    :
    :
    srand(time(NULL)); //seeds the prng. just do it once - maybe at the start of main()
    :
    :
    x=rand();
y=rand(); //etc etc

You want something like this?

#include <cstdio>
#include <cstdlib>
#include <ctime>
const int MAX_N = 100;

// returns a random number x, where a <= x <= b
// srand(time(NULL)) must be called before using this function
int random(int a, int b){
	return (rand() % (b - a + 1)) + a;	
}
int main() {
	srand(time(NULL)); // initalizing PRNG
	int n = 5;
	int m = 5;
	int a[MAX_N][MAX_N];
	// assign each number of the matrix with a random number between 1 and 100
	for(int i = 0; i < n; i ++){
		for(int j = 0; j < m; j++){
			a[i][j] = random(1, 100);
		}
	} 
	// print the matrix for visualisation
	for(int i = 0; i < n; i++){
		for(int j = 0; j < m; j++){
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}
	return 0;
}

#include “iostream”
#include “algorithm”
#include “vector”
#include “cstdlib”

using std::vector;

class rand_range { // functor for generating random values in range
public:
rand_range(int _min_val, int _max_val) : min_val(_min_val), max_val(_max_val) { }
int operator()() { return min_val + rand() % (max_val - min_val + 1); }
private:
int min_val;
int max_val;
};

int main()
{
const int m = 10; // 10 rows
const int n = 20; // 20 cols
const int r_min = 100; // random range min
const int r_max = 200; // random tange max

vector<int> v_row(n);               // allocate matrix
vector<vector<int> > v_matrix(m, v_row);

for (auto &v_row : v_matrix)        // init matrix with random values
{
    std::generate(v_row.begin(), v_row.end(), rand_range(r_min, r_max));
}

for (auto const &v_row : v_matrix)  // display contents of matrix
{
    for (auto const i : v_row)
    {
        std::cout << " " << i;
    }
    std::cout << std::endl;
}

return 0;

}

Answer is not clear.
And please assume me a beginner.

you can write values to fill an m by n array using a loop that iterates n times inside a loop that iterates m times

you could limit the range of values using % and + e.g if you want a number x where 1<=x<=10 you could do
x=rand()%10+1;

There are still standard library and prototype issues.

answer below from @gdisastery1 compiles & runs perfectly on g++ 4.5.3 here

as an experiment you could comment out srand(time(NULL)); and see the difference it makes to the output over repeated runs.