interleaved-bootwar

This vignette shows how to play bootwar using an interleaved deck built with an anonymous function. An interleaved deck gives users the ability to sample cards from different distributions for different players.

Initialization:

Initialization is the same as for a standard 52 card deck or an anonymous deck.

# Load bootwar
library(bootwar)

# Set up vectors for computer and player's cards and values
comp_cv <- vector(mode = "character")
comp_vv <- vector(mode = "numeric")
plyr_cv <- vector(mode = "character")
plyr_vv <- vector(mode = "numeric")

Define Custom Deck

Use the deck_of_cards parameter of shuffle_deck() to define a different custom deck of cards for each player by using an anonymous function to return a list of decks.

seed <- 123
set.seed(seed)

# Shuffle the deck
ideck <- mmcards::shuffle_deck(
  deck_of_cards = function(x) {list(as.integer(stats::runif(26, 25, 50)),
                                    as.integer(stats::runif(26, 35, 55)))},
  seed = seed
  )

head(ideck)
#>     card value
#> 7    A_7    38
#> 41   B_4    37
#> 21  A_21    47
#> 131 B_13    41
#> 6    A_6    26
#> 51   B_5    54

The rest of the workflow follows the same structure as the README.

Play the First Round:

rres <- play_round(cdeck = ideck,
                   plyr_cv = plyr_cv, plyr_vv = plyr_vv,
                   comp_cv = comp_cv, comp_vv = comp_vv)

Continue the Game for Four More Rounds:

for (i in 1:4) {
  rres <- play_round(cdeck = rres$updated_deck,
                     plyr_cv = rres$plyr_cv, plyr_vv = rres$plyr_vv,
                     comp_cv = rres$comp_cv, comp_vv = rres$comp_vv)
}

# Ensure 10 cards have been dealt
nrow(rres$updated_deck)
#> [1] 42

Analyze the Game:

gres <- analyze_game(plyr_vv = rres$plyr_vv, comp_vv = rres$comp_vv,
                     mode = "pt", nboot = 1000, seed = 150, conf.level = 0.05)

# Display game results
gres$winner
#> [1] "Computer Wins"
gres$bootstrap_results$effect.size
#> [1] -2.2
gres$bootstrap_results$ci.effect.size
#> 47.5% 52.5% 
#>  -0.2   0.2
gres$bootstrap_results$p.value
#> [1] 0.744