The school carnival was a couple weekends ago, and I volunteered at a game called Frog Bog. Players use a hammer to hit a lever that launches a frog at a rotating set of lily pads. You score by getting a frog in the lily pad. Players get four frogs per turn. I thought it might be nice to know the probability of success to help understand how to distribute prizes.
Here’s a video from a different carnival. We only have one rotating set of lily pads at our carnival.
Loading the data…
library(googlesheets)
suppressPackageStartupMessages(library(dplyr))
library(binom)
my_sheets <- gs_ls()
fb <- gs_title("Frog_bog")
## Sheet successfully identified: "Frog_bog"
x <- gs_read(fb)
## Accessing worksheet titled 'Sheet1'.
## Parsed with column specification:
## cols(
## Successes = col_double()
## )
Here is what the raw data look like.
x <- tbl_df(x)
x
## # A tibble: 48 x 1
## Successes
## <dbl>
## 1 0
## 2 0
## 3 0
## 4 0
## 5 0
## 6 0
## 7 0
## 8 0
## 9 1
## 10 0
## # … with 38 more rows
Summarized in table form we have the number of times each outcome happened per game of 4 tries.
table(x)
## x
## 0 1 2 3
## 30 15 2 1
To find the probability of success, we make a big assumption that success is completely random and independent of each player’s skill. The probability of a success on any one attempt is thus successes divided by attempts.
attempts <- nrow(x) * 4
successes <- sum(x$Successes)
psuccess <- successes/attempts
Below I calculate the probability of 4, 3, 2, 1, and 0 successes per game.
data.frame(successes = 0:4, p = dbinom(0:4, size = 4, prob = psuccess))
## successes p
## 1 0 0.6145974736
## 2 1 0.3181445746
## 3 2 0.0617574762
## 4 3 0.0053280960
## 5 4 0.0001723796
If we want to take about 90% of the entry fee (return 10% to winners), we need to determine what each prize should be. If we have no prize for 0 frogs, you already are collecting 61.46% of the proceeds.
Let’s say we have a small prize for 1 success, valued at a small percentage of the entry fee. We would have a medium prize for 2 successes and a big prize for 3 successes. The grand prize could be much larger than the entry fee since it only happens about 1 in 5800 tries. I set the absolute dollar returns in the vector below.
fractions <- c(0, 0.1, 1, 3, 10)
Here’s the expected payout, broken down by probability of successes in one 4 frog game.
dbinom(0:4, size = 4, prob = psuccess) * fractions
## [1] 0.000000000 0.031814457 0.061757476 0.015984288 0.001723796
Overall expected payout per game would be then:
sum(dbinom(0:4, size = 4, prob = psuccess) * fractions)
## [1] 0.11128
That gets pretty close to the goal amount of proceeds. The actual entry fee was $2.50.
At a conservative estimate of one game per minute, over 10 hours per day, in a 2 day fair, that’s 1200 games. The game thus makes approximately $2866.46 or $143.32 per hour.