Estimating Required Coinage

July 5, 2014
By

(This article was first published on Econometrics by Simulation, and kindly contributed to R-bloggers)

I would like to code up a simple method of minimizing the number of coins required to give change.  Then I would like see what coins are most likely to be called into usage if change is required from a uniform draw between 1 cent and 499 cents.

Exported from Notepad++

# Define denominations to search throughden <- c(200,100,25,10,5,1) # I use the 200 and 100 for Canadian coins the Loonies and Twoonies. # The changer function will do what we want.# It is based on the concept that if we exhaust our biggest # currencies first then we will minize coin requirements.# This might not be the case if we had unusual coinage, # for instance a 30 cent peice would give 2×30 + 1xto + 1×5 = 75 cents# while 3×25 would be the preferred route.# However, since coinage tends to be divisible, in any example I can# think of using largest coins first always minimizes coin requirements.changer <- function(value, den) { # value is the change that must be made # den is the denominations available remainder <- value # Remainder counts how much change is still required to be made for count <- den # counts the required instances of each denomination names(count) <- den # loops through each of the denominations and removes the required # coinage for (i in 1:length(den)) { count[i] <- floor(remainder/den[i]) remainder <- remaindercount[i]*den[i] } count} changer(341,den)# 200 100 25 10 5 1 # 1 1 1 1 1 1 # Now let’s see how many coins are required to make change for# all possible change between 1 cent and \$4.99 cents.curcount <- NULLfor (i in 1:499) curcount <- rbind(curcount, changer(i,den)) (meancur <- apply(curcount, 2, mean))# 200 100 25 10 5 1 # 0.8016032 0.4008016 1.5030060 0.8016032 0.4008016 2.0040080 # We can see that the average transaction required .8 2 dollar coins,# .4 dollars, 1.5 quarters, .8 dimes, .4 nickels, and 2 pennies (ratiocur <- meancur/sum(meancur))# 200 100 25 10 5 1 # 0.13559322 0.06779661 0.25423729 0.13559322 0.06779661 0.33898305# Pennies had the largest ratio of 34% required while 25% of quarters# were required. den <- c(25,10,5,1)curcount <- NULLfor (i in 1:99) curcount <- rbind(curcount, changer(i,den)) (meancur <- apply(curcount, 2, mean))# 25 10 5 1 # 1.5151515 0.8080808 0.4040404 2.0202020 require(plotrix)pie3D(meancur, explode=0.3,radius=2.9, labels=c(“quarters”, “dimes”, “nickles”, “pennies”), main=“Currency Ratios Required for Change”)

(ratiocur <- meancur/sum(meancur))# 25 10 5 1 # 0.31914894 0.17021277 0.08510638 0.42553191# Once again pennies have the highest requirement at 42% of transactions# while quarters are next with 32%. Nickles are the least required with# only 8.5% of the ratio of required coins. # We might also want to know for what percentage of transactions certain# coins are required. We can do this one mostly in our head. Pennies will# be required whenever change is not divisible by 5, thus ~4/5 times.# Quarters will be required whenever the change is greater than 24 cents,# thus ~75/99=757. Dimes will be required when whatever remains # after dividing by quarters is greater than 9 cents, thus ~15/25=60%.# Finally, nickles are required whenever whatever is left after quarters # and dimes is greater or equal to 5. 25 -> 1,2,3,4,x5,x6,x7,x8,x9,0,1,2,# 3,4,x5,x6,x7,x8,x9,0,1,2,3,4 so, ~10/25=40%. # Let’s check.apply(curcount>0, 2, mean)# 25 10 5 1 # 0.7575758 0.6060606 0.4040404 0.8080808 # Thus we can see that though nickles represent a small portion of the# optimal ratio of currency in circulation, the do represent a large# portion of the optimal change patterns required.

To leave a comment for the author, please follow the link and comment on their blog: Econometrics by Simulation.

R-bloggers.com offers daily e-mail updates about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...

If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook...

Comments are closed.

Sponsors

Contact us if you wish to help support R-bloggers, and place your banner here.

Never miss an update! Subscribe to R-bloggers to receive e-mails with the latest R posts.(You will not see this message again.)

Click here to close (This popup will not appear again)