A straightforward way would be using recursion and memoization. An example: n = 5; c = RandomReal[NormalDistribution[], n]/100; Clear[x] Array[(x[#] = RandomReal[NormalDistribution[]]) &, n]; (* Initial conditions *) x[t_Integer] /; t > n := x[t] = c.Table[x[i], {i, t - 1, t - n, -1}] + RandomReal[NormalDistribution[]] ListLinePlot[x /@ Range[300]] ![enter image description here][1] [1]: https://i.sstatic.net/M0bUY.png