my.cards <- list(c("red", "black"), c("black", "black"), c("red", "red")) ### choose a card at random draw.card <- function (cards = my.cards) { i <- sample(cards, 1)[[1]] } ### choose a random orientation for a card random.flip <- function(card) { i <- sample(1:2, 1) if (i == 1) c(card[1], card[2]) else c(card[2], card[1]) } ### draw a random card and random side; compute the probability that ### the other side is red. do.card.trick <- function(n = 10000) { study <- data.frame(t(sapply(1:n, function (i) random.flip(draw.card(my.cards))))) my.table <- table(subset(study, X1=="red")[, 2]) my.table / sum(my.table) }