rw.sim <- function( k, p, theta.start, n.sim, seed ) { set.seed( seed ) theta <- rep( 0, n.sim + 1 ) theta[ 1 ] <- theta.start for ( i in 1:n.sim ) { theta[ i + 1 ] <- move( k, p, theta[ i ] ) } return( table( theta ) ) } move <- function( k, p, theta ) { repeat { increment <- sample( x = c( -1, 0, 1 ), size = 1, prob = p ) theta.next <- theta + increment if ( abs( theta.next ) <= k ) { return( theta.next ) break } } } p <- c( 1, 1, 1 ) / 3 k <- 5 theta.start <- 0 seed <- c( 6425451, 9626954 ) rw.sim( k, p, theta.start, 10, seed ) rw.sim( k, p, theta.start, 100, seed ) rw.sim( k, p, theta.start, 1000, seed ) rw.sim( k, p, theta.start, 10000, seed ) rw.sim( k, p, theta.start, 100000, seed ) rw.sim( k, p, theta.start, 1000000, seed ) rw.sim( k, p, 5, 100000, seed ) p <- c( 0.2, 0.3, 0.5 ) rw.sim( k, p, 0, 10, seed ) rw.sim( k, p, 0, 100, seed ) rw.sim( k, p, 0, 1000, seed ) rw.sim( k, p, 0, 10000, seed ) rw.sim( k, p, 0, 1000000, seed )