# Generating a Matrix of random numbers

**URL:** <https://discourse.mc-stan.org/t/generating-a-matrix-of-random-numbers/3176>\
**Category:** Modeling\
**Created:** [February 2, 2018, 3:18pm UTC](https://discourse.mc-stan.org/t/generating-a-matrix-of-random-numbers/3176 "2018-02-02T15:18:41Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![ChrisMu](https://avatars.discourse-cdn.com/v4/letter/c/d2c977/32.png) [@ChrisMu](https://discourse.mc-stan.org/u/ChrisMu)\
**Post date:** [February 2, 2018, 3:18pm UTC](https://discourse.mc-stan.org/t/generating-a-matrix-of-random-numbers/3176/1 "2018-02-02T15:18:42Z")

</div>

So for a Time Series model I need a matrix with random numbers. Lets say we have k = 2 series, and T = 500 numbers of observations for each series. What I want is a matrix with T x k random numbers that differ in each period. In the univariate case this is no problem by simply saying:  
eta ~ normal(0,vareta) ; // vareta is a scalar  
But if I write  
eta ~ multi\_normal(rep\_row\_vector(0,k),vareta) ; // vareta is a covariance matrix  
where eta is a T x k matrix I get the error that

No matches for:

matrix ~ multi\_normal(row vector, matrix)

Available argument signatures for multi\_normal:

vector ~ multi\_normal(vector, matrix)  
vector ~ multi\_normal(row vector, matrix)  
row vector ~ multi\_normal(vector, matrix)  
row vector ~ multi\_normal(row vector, matrix)  
vector ~ multi\_normal(vector[], matrix)  
vector ~ multi\_normal(row vector[], matrix)  
row vector ~ multi\_normal(vector[], matrix)  
row vector ~ multi\_normal(row vector[], matrix)  
vector[] ~ multi\_normal(vector, matrix)  
vector[] ~ multi\_normal(row vector, matrix)  
row vector[] ~ multi\_normal(vector, matrix)  
row vector[] ~ multi\_normal(row vector, matrix)  
vector[] ~ multi\_normal(vector[], matrix)  
vector[] ~ multi\_normal(row vector[], matrix)  
row vector[] ~ multi\_normal(vector[], matrix)  
row vector[] ~ multi\_normal(row vector[], matrix)

## require real scalar return type for probability function. error in ‘model18cc231a4b08\_MSV23’ at line 58, column 48

```
56: 
57: model {
58: eta ~ multi_normal(rep_row_vector(0,k),vareta) ;
                                                   ^
59: 

```

* * *

So i decided to do the following thing:  
for (t in 1:T) {  
eta[t,] ~ multi\_normal(rep\_row\_vector(0,k),vareta) ;  
}  
this works and gives me the wanted matrix, but I guess it is very inefficient in terms of sampling speed.

I am gratefull for any hints.

Best  
Chris

---

<div class="post-metadata">

**Author:** ![bgoodri](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/bgoodri/32/4451_2.png) [@bgoodri](https://discourse.mc-stan.org/u/bgoodri)\
**Post date:** [February 2, 2018, 4:13pm UTC](https://discourse.mc-stan.org/t/generating-a-matrix-of-random-numbers/3176/2 "2018-02-02T16:13:23Z")

</div>

> [@ChrisMu](#):
>
> row vector ~ multi\_normal(row vector, matrix)

Use this signature; i.e. declare it as `row_vector[k] eta[T];` rather than a T by k matrix.
