| 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  |