UNB/ CS/ David Bremner/ teaching/ cs3383/ examples/ mat.hpp
#ifndef _MAT_HPP
#define _MAT_HPP

#include <vector>
#include <random>
#include <cilk/cilk.h>

typedef double scalar;
typedef std::vector<scalar> vec;
typedef std::vector<vec> mat;

inline double dist(long int raw) {
  return (raw % 20) -10 ;
}

inline
mat random_mat(long seed, int rows, int cols) {
  mat A;
  A.resize(rows);
  cilk_for(int i=0; i<rows; i++) {
    std::mt19937 gen(seed+i);
    vec v;
    v.resize(cols);
    for (int j=0; j<cols; j++) {
      v[j]=dist(gen());
    }
    A[i]=v;
  }
  return A;
}
#endif