15: Write a program to simulate the outcomes of a Markov chain after n steps,

given the initial starting state and the transition matrix P as data (see Example 11.12). Keep this program for use in later problems.

simulate_markov_chain <- function(initial_state, transition_matrix, n_steps) {
  current_state <- initial_state
  for (i in 1:n_steps) {
    current_state <- sample(1:length(transition_matrix[current_state, ]), 
                            1, 
                            prob = transition_matrix[current_state, ])
  }
  return(current_state)
}

## testing the code
initial_state <- 1
transition_matrix <- matrix(c(0.7, 0.3, 0.2, 0.8), nrow = 2, byrow = TRUE)
n_steps <- 10

result <- simulate_markov_chain(initial_state, transition_matrix, n_steps)
print(result)
## [1] 2