In [1]:
using QuantEcon


INFO: Recompiling stale cache file /Users/akira/.julia/lib/v0.4/QuantEcon.ji for module QuantEcon.
INFO: Recompiling stale cache file /Users/akira/.julia/lib/v0.4/Distributions.ji for module Distributions.
INFO: Recompiling stale cache file /Users/akira/.julia/lib/v0.4/PDMats.ji for module PDMats.
INFO: Recompiling stale cache file /Users/akira/.julia/lib/v0.4/StatsFuns.ji for module StatsFuns.
INFO: Recompiling stale cache file /Users/akira/.julia/lib/v0.4/StatsBase.ji for module StatsBase.
INFO: Recompiling stale cache file /Users/akira/.julia/lib/v0.4/ArrayViews.ji for module ArrayViews.
INFO: Recompiling stale cache file /Users/akira/.julia/lib/v0.4/DSP.ji for module DSP.
INFO: Recompiling stale cache file /Users/akira/.julia/lib/v0.4/Reexport.ji for module Reexport.
INFO: Recompiling stale cache file /Users/akira/.julia/lib/v0.4/LightGraphs.ji for module LightGraphs.
INFO: Recompiling stale cache file /Users/akira/.julia/lib/v0.4/Requires.ji for module Requires.
INFO: Recompiling stale cache file /Users/akira/.julia/lib/v0.4/GZip.ji for module GZip.
INFO: Recompiling stale cache file /Users/akira/.julia/lib/v0.4/LightXML.ji for module LightXML.
INFO: Recompiling stale cache file /Users/akira/.julia/lib/v0.4/ParserCombinator.ji for module ParserCombinator.
INFO: Recompiling stale cache file /Users/akira/.julia/lib/v0.4/AutoHashEquals.ji for module AutoHashEquals.
INFO: Recompiling stale cache file /Users/akira/.julia/lib/v0.4/Clustering.ji for module Clustering.
INFO: Recompiling stale cache file /Users/akira/.julia/lib/v0.4/Distances.ji for module Distances.
INFO: Recompiling stale cache file /Users/akira/.julia/lib/v0.4/JLD.ji for module JLD.
INFO: Recompiling stale cache file /Users/akira/.julia/lib/v0.4/HDF5.ji for module HDF5.
INFO: Recompiling stale cache file /Users/akira/.julia/lib/v0.4/Blosc.ji for module Blosc.
INFO: Recompiling stale cache file /Users/akira/.julia/lib/v0.4/FileIO.ji for module FileIO.

In [3]:
function mc_sample_path(P; init=1, sample_size=1000)
    X = Array(Int64, sample_size) # allocate memory
    X[1] = init
    # === convert each row of P into a distribution === #
    n = size(P)[1]
    P_dist = [DiscreteRV(vec(P[i,:])) for i in 1:n]

    # === generate the sample path === #
    for t in 1:(sample_size - 1)
        X[t+1] = draw(P_dist[X[t]])
    end
    return X
end


Out[3]:
mc_sample_path (generic function with 1 method)

In [ ]: