biased_random_walk <- function (prob_up,steps) { position <- numeric(steps+1) for (i in 1:steps) { if (runif(1) < prob_up) position[i+1] <- position[i] + 1 else position[i+1] <- position[i] - 1 } position } random_walks_1 <- function (steps, num) { walks <- matrix(0,nrow=steps+1,ncol=num) for (j in 1:num) { for (i in 1:steps) { if (runif(1) < 0.5) walks[i+1,j] <- walks[i,j] + 1 else walks[i+1,j] <- walks[i,j] - 1 } } walks } random_walks_2 <- function (steps, num) { walks <- matrix(0,nrow=steps+1,ncol=num) for (i in 1:steps) { for (j in 1:num) { if (runif(1) < 0.5) walks[i+1,j] <- walks[i,j] + 1 else walks[i+1,j] <- walks[i,j] - 1 } } walks } random_walks_3 <- function (steps, num) { walks <- matrix(0,nrow=steps+1,ncol=num) for (i in 1:steps) walks[i+1,] <- walks[i,] + 2 * as.numeric(runif(num) < 0.5) - 1 walks } plot_walks <- function (walks) { plot(c(),type="n",xlim=c(1,nrow(walks)),ylim=c(min(walks),max(walks))) for (j in 1:ncol(walks)) points(1:nrow(walks),walks[,j],col=j,pch=20) } walk_sd <- function (walks) { r <- numeric(nrow(walks)) for (i in 1:nrow(walks)) r[i] <- sd(walks[i,]) r } steps_until_value <- function (value) { pos <- 0 steps <- 0 while (pos != value) { if (runif(1) < 0.5) pos <- pos + 1 else pos <- pos - 1 steps <- steps + 1 } steps } steps_dist <- function (value, rep) { r <- numeric(rep) for (j in 1:rep) r[j] <- steps_until_value(value) r }