| Type: | Package | 
| Title: | Simulates Dice Rolls and Coin Flips | 
| Version: | 1.0.0 | 
| Maintainer: | Roland Krasser <roland.krasser@gmail.com> | 
| Description: | Utils for basic statistical experiments, that can be used for teaching introductory statistics. Each experiment generates a tibble. Dice rolls and coin flips are simulated using sample(). The properties of the dice can be changed, like the number of sides. A coin flip is simulated using a two sided dice. Experiments can be combined with the pipe-operator. | 
| License: | GPL-3 | 
| Encoding: | UTF-8 | 
| URL: | https://github.com/rolkra/tidydice | 
| Imports: | assertthat, dplyr, ggplot2, magrittr, purrr, stats, stringr, tibble, tidyr | 
| RoxygenNote: | 7.2.1 | 
| Suggests: | explore, knitr, rmarkdown, testthat | 
| VignetteBuilder: | knitr | 
| NeedsCompilation: | no | 
| Packaged: | 2023-02-03 09:09:37 UTC; ujqb7lf | 
| Author: | Roland Krasser [aut, cre], Giovanni Marco Dall'Olio [aut] | 
| Repository: | CRAN | 
| Date/Publication: | 2023-02-03 09:40:02 UTC | 
Binomial distribution as table.
Description
Generates a tibble containing the binomial distribution using dbinom().
Usage
binom(times, prob_success)
Arguments
| times | number of trials | 
| prob_success | probability of success (number between 0 and 1) | 
Value
Binomial distribution as a tibble
Examples
binom(times = 10, prob_success = 1/10)
Binomial distribution of flipping a coin.
Description
Generates a tibble containing the binomial distribution of flipping a coin using dbinom().
Usage
binom_coin(times, sides = 2, success = 2)
Arguments
| times | how many times a coin is flipped (or how many coins are flipped at the same time) | 
| sides | number of sides of the coin (default = 2) | 
| success | which result is a success (default = 2) | 
Value
binomial distribution as a tibble
Examples
binom_coin(times = 10)
Binomial distribution of rolling a dice.
Description
Generates a tibble containing the binomial distribution of rolling the dice using dbinom().
Usage
binom_dice(times, sides = 6, success = 6)
Arguments
| times | How many times a dice is rolled (or how many dice are rolled at the same time) | 
| sides | Number of sides of the dice (default = 6) | 
| success | Which result is a success (default = 6) | 
Value
Binomial distribution as a tibble
Examples
binom_dice(times = 10)
Helper function to draw a circle
Description
Helper function to draw a circle
Usage
circle_points(center = c(0, 0), diameter = 1, npoints = 61)
Arguments
| center | Vector with x and y coordinate of center | 
| diameter | Diameter of circle | 
| npoints | Number of points used for drawing a circle | 
Value
Dataframe with x and y coordinates to draw a circle
Simulating flipping a coin.
Description
Flipping a coin is simulated using sample(). The default coin has 2 sides and is fair. The properties of the coin can be changed. The result is returned as a tibble.
Usage
flip_coin(
  data = NULL,
  times = 1,
  rounds = 1,
  success = c(2),
  agg = FALSE,
  sides = 2,
  prob = NULL,
  seed = NULL
)
Arguments
| data | Data from a previous experiment | 
| times | How many times coin is flipped (or how many coins are flipped at the same time) | 
| rounds | Number of rounds | 
| success | Which result is a success (default = 2) | 
| agg | If TRUE, the result is aggregated (by experiment, rounds) | 
| sides | Number of sides of the coin (default = 2) | 
| prob | Vector of probabilities for each side of the coin | 
| seed | Seed to produce reproducible results | 
Value
Result of experiment as a tibble
Examples
# flipping a coin
flip_coin()
# flipping a coin 10 times
flip_coin(times = 10)
# aggregate result
flip_coin(times = 10, agg = TRUE)
# rounds 
flip_coin(times = 10, rounds = 3, agg = TRUE)
# experiments
library(dplyr)
flip_coin(times = 10, rounds = 3, agg = TRUE) %>% 
  flip_coin(times = 12, rounds = 3, agg = TRUE) 
Force a coin flipping result.
Description
The forced result is returned as a tibble.
Usage
force_coin(data = NULL, result = 6, round = 1, experiment = 1, success = 2)
Arguments
| data | Data from a previous experiment | 
| result | Vector of flipping coin results | 
| round | Round of flipping coin | 
| experiment | Experiment Number | 
| success | Which result is a success (default = 6) | 
Value
Result of experiment as a tibble
Examples
force_coin(6)
force_coin(1:6)
Force a dice rolling result.
Description
The forced result is returned as a tibble.
Usage
force_dice(data = NULL, result = 6, round = 1, experiment = 1, success = 6)
Arguments
| data | Data from a previous experiment | 
| result | Vector of rolling dice results | 
| round | Round of rolling dice | 
| experiment | Experiment Number | 
| success | Which result is a success (default = 6) | 
Value
Result of experiment as a tibble
Examples
force_dice(6)
force_dice(1:6)
Given a dice formula string, split it and return a dataframe with the list of functions.
Description
This is the main function to parse a string containing complex formula specifications for rolling dice.
Usage
parse_dice_formula(dice_formula)
Arguments
| dice_formula | A string containing a dice formula, e.g. 1d6e2+1d4 | 
Details
The input can be a string containing specifications for multiple dice, e.g.:
- 1d6e6 -> roll 1 six-sided dice, explode on 6 
- 1d6e6+2d4-1d10 -> Roll 1 six-sided dice, explode on 6, plus two 4-sided dice, subract one 10-sided dice 
This is inspired by Avrae's bot syntax for rolling dice. See https://github.com/avrae/d20
Helper function to parse a dice formula
Description
Helper function to parse a dice formula
Usage
parse_dice_formula_part(dice_formula_part)
Arguments
| dice_formula_part | A split dice formula, e.g. 1d6e2. For more complex formula, e.g. 1d6e2+3d4, see parse_dice_formula | 
Plot a binomial distribution.
Description
Plot a binomial distribution generated with binom_dice() or binom_coin()
Usage
plot_binom(
  data,
  title = "Binomial distribution",
  color = "darkgrey",
  color_highlight = "coral",
  label = NULL,
  label_size = 3,
  min_pct = 0.05,
  highlight = NULL
)
Arguments
| data | data containing values for binomial distribution | 
| title | title of the plot | 
| color | color of bars | 
| color_highlight | color of highlighted bars | 
| label | add labels to plot? | 
| label_size | size of label | 
| min_pct | surpress values < min_pct | 
| highlight | vector of values to be highlighted | 
Value
ggplot object
Examples
plot_binom(data = binom_dice(times = 10))
Plot result of flip_coin()
Description
Plot result of flip_coin()
Usage
plot_coin(
  data,
  detailed = FALSE,
  fill = "white",
  fill_success = "gold",
  line_color = "black",
  line_size = 0.8
)
Arguments
| data | result of flip_coin() | 
| detailed | not supported at moment | 
| fill | Fill color | 
| fill_success | Fill color if result is a success | 
| line_color | Color of Lines | 
| line_size | Size of Lines | 
Value
ggplot-Object
Examples
library(magrittr)  
# plot one coin
plot_coin()
# plot multiple coin flips
flip_coin(times = 3, rounds = 3) %>% 
  plot_coin()
  
# change coin design    
flip_coin(times = 3, rounds = 3) %>% 
  plot_coin(fill_success = "red")
Plot result of roll_dice()
Description
Plot result of roll_dice()
Usage
plot_dice(
  data,
  detailed = FALSE,
  fill = "white",
  fill_success = "gold",
  point_color = "black",
  line_color = "black",
  line_size = 0.8
)
Arguments
| data | result of roll_dice() | 
| detailed | If TRUE, the dice is plotted with more details | 
| fill | Fill color | 
| fill_success | Fill color if result is a success | 
| point_color | Color of Points | 
| line_color | Color of Lines | 
| line_size | Size of Lines | 
Value
ggplot-Object
Examples
library(magrittr)  
plot_dice()
roll_dice(times = 3, rounds = 3) %>% plot_dice()
roll_dice(times = 3, rounds = 3) %>% plot_dice(fill_success = "red")
Draw a single coin
Description
Draw a single coin
Usage
plot_single_coin(
  ggplot = NULL,
  result = 1,
  x = 0,
  y = 0,
  width = 0.9,
  fill = "white",
  detailed = FALSE,
  line_size = 0.8,
  line_color = "black"
)
Arguments
| ggplot | ggplot-Object. If passed, the dice will be added to plot | 
| result | Result of flip coin (0/1) | 
| x | X-coordinate of dice (center) | 
| y | y-coordinate of dice (center) | 
| width | Width of coin | 
| fill | Fill color | 
| detailed | If TRUE, the dice is plotted with more details | 
| line_size | Size of Lines | 
| line_color | Color of Lines | 
Value
ggplot-Object
Draw a single dice
Description
Draw a single dice
Usage
plot_single_dice(
  ggplot = NULL,
  result = 6,
  x = 0,
  y = 0,
  width = 0.9,
  fill = "white",
  detailed = FALSE,
  rounding = width/5,
  line_size = 0.8,
  line_color = "black",
  point_size = width/6,
  point_color = "black"
)
Arguments
| ggplot | ggplot-Object. If passed, the dice will be added to plot | 
| result | Result of dice rolling (0..6) | 
| x | X-coordinate of dice (center) | 
| y | y-coordinate of dice (center) | 
| width | Width of dice | 
| fill | Fill color | 
| detailed | If TRUE, the dice is plotted with more details | 
| rounding | Rounding of dice (only used if detailed == TRUE) | 
| line_size | Size of Lines | 
| line_color | Color of Lines | 
| point_size | Size of Points | 
| point_color | Color of Points | 
Value
ggplot-Object
Simulating rolling a dice.
Description
Rolling a dice is simulated using sample(). The default dice has 6 sides and is fair. The properties of the dice can be changed. The result is returned as a tibble.
Usage
roll_dice(
  data = NULL,
  times = 1,
  rounds = 1,
  success = c(6),
  agg = FALSE,
  sides = 6,
  prob = NULL,
  seed = NULL
)
Arguments
| data | Data from a previous experiment | 
| times | How many times a dice is rolled (or how many dice are rolled at the same time) | 
| rounds | Number of rounds | 
| success | Which result is a success (default = 6) | 
| agg | If TRUE, the result is aggregated (by experiment, rounds) | 
| sides | Number of sides of the dice (default = 6) | 
| prob | Vector of probabilities for each side of the dice | 
| seed | Seed to produce reproducible results | 
Value
Result of experiment as a tibble
Examples
# rolling a dice once
roll_dice()
# rolling a dice 10 times
roll_dice(times = 10)
# aggregate result
roll_dice(times = 10, agg = TRUE)
# rounds 
roll_dice(times = 10, rounds = 3, agg = TRUE)
# experiments
library(dplyr)
roll_dice(times = 10, rounds = 3, agg = TRUE) %>% 
  roll_dice(times = 12, rounds = 3, agg = TRUE) 
Simulating rolling a dice, using a formula
Description
Simulating rolling a dice, using a formula
Usage
roll_dice_formula(
  data = NULL,
  dice_formula = "1d6",
  times = 1,
  rounds = 1,
  seed = NULL,
  prob = NULL,
  success = c(6),
  agg = FALSE,
  label = NULL
)
Arguments
| data | Data from a previous experiment | 
| dice_formula | Dice formula (e.g. "1d6" = 1 dice with 6 sides) | 
| times | How many times a dice is rolled (or how many dice are rolled at the same time) | 
| rounds | Number of rounds | 
| seed | Seed to produce reproducible results | 
| prob | Vector of probabilities for each side of the dice | 
| success | Which result is a success (default = 6) | 
| agg | If TRUE, the result is aggregated (by experiment, rounds) (not implemented) | 
| label | Custom text to distinguish an experiment, can be used for plotting etc. | 
Value
Result of experiment as a tibble
Examples
# roll one 6-sided dice
roll_dice_formula(dice_formula = "1d6")
# roll one 8-sided dice
roll_dice_formula(dice_formula = "1d8")
# roll two 6-sided dice
roll_dice_formula(dice_formula = "2d6")
# roll two 6-sided dice, explode dice on a 6
roll_dice_formula(dice_formula = "2d6e6")
# roll three 6-sided dice, keep highest 2 rolls
roll_dice_formula(dice_formula = "3d6kh2")
# roll three 6-sided dice, keep lowest 2 rolls
roll_dice_formula(dice_formula = "3d6kl2")
# roll four 6-sided dice, keep highest 3 rolls, but explode on a 6
roll_dice_formula(dice_formula = "4d6kh3e6")
# roll one 20-sided dice, and add 4
roll_dice_formula(dice_formula = "1d20+4")
# roll one 4-sided dice and one 6-sided dice, and sum the results
roll_dice_formula(dice_formula = "1d4+1d6")
Helper function to get sum of top n dice
Description
Helper function to get sum of top n dice
Usage
top_n_dice(x, n, dec = F)
Arguments
| x | Vector of dice-values | 
| n | Number of dice | 
| dec | Decreasing |