The Gambling Machine Puzzle
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
This puzzle came up in the New York Times Number Play blog. It goes like this:
An entrepreneur has devised a gambling machine that chooses two independent random variables x and y that are uniformly and independently distributed between 0 and 100. He plans to tell any customer the value of x and to ask him whether y > x or x > y.
If the customer guesses correctly, he is given y dollars. If x = y, he’s given y/2 dollars. And if he’s wrong about which is larger, he’s given nothing.
The entrepreneur plans to charge his customers $40 for the privilege of playing the game. Would you play?
I figured I’d give it a go. Since I was feeling lazy, and already had my computer in front of me, I thought that I’d do it via simulation rather than working out the exact maths. I tried playing the game with the first strategy that came to mind. If x<50, I would choose y>x, and if x>50, I’d choose y
N<-100000 x<-sample.int(100,N,replace=TRUE) y<-sample.int(100,N,replace=TRUE) dec_rule=50 payout<-numeric(N) for(i in 1:N) { ## Correct Guess (playing simple max p(!0) strategy) if( (x[i]>dec_rule & y[i]<x[i]) | (x[i]<=dec_rule & y[i]>x[i]) ) payout[i]<-y[i] ## Incorrect Guess (playing simple max p(!0) strategy) if( (x[i]>dec_rule & y[i]>x[i]) | (x[i]<=dec_rule & y[i]<x[i]) ) payout[i]<-0 ## Tie pays out y/2 if(x[i] == y[i]) payout[i]<-y[i]/2 } ## Expected Payout ## print(paste(dec_rule,mean(payout)))
Which leads to an expected payout of $37.75. Playing the risk averse strategy leads to an expected value less than the cost of admission, loosing on average 25 cents per play. No deal, Mr entrepreneur, I had something else in mind for my forty bucks anyway.
Lets try alternate strategies, and see if we can’t play in such a way as to improve our outlook.
## Gambling Machine Puzzle ## ## Puzzle presented in http://wordplay.blogs.nytimes.com/2013/03/04/machine/ result<-numeric(100) for(dec_rule in 1:100) { N<-10000 x<-sample.int(100,N,replace=TRUE) y<-sample.int(100,N,replace=TRUE) payout<-numeric(N) for(i in 1:N) { ## Correct Guess (playing dec_rule strategy) if( (x[i]>dec_rule & y[i]<x[i]) | (x[i]<=dec_rule & y[i]>x[i]) ) payout[i]<-y[i] ## Incorrect Guess (playing dec_rule strategy) if( (x[i]>dec_rule & y[i]>x[i]) | (x[i]<=dec_rule & y[i]<x[i]) ) payout[i]<-0 ## Tie pays out y/2 if(x[i] == y[i]) payout[i]<-y[i]/2 } ## Expected Payout ## print(paste(dec_rule,mean(payout))) result[dec_rule]<-mean(payout) } par(cex=1.5) plot(result,xlab='Decision rule',ylab='E(payout)',pch=20) abline(v=which.max(result)) abline(h=max(result)) abline(h=40,lty=3)
According to which, the best case scenario is an expected payout of $40.66, or an expected net of 66 cents per bet, if you were to play the strategy of choosing y>x for any x<73 and y
To calculate the exactly optimal strategy and expected payout, we would need to compute the derivative of the expected payout function with respect to the within game decision threshold. I leave this fun stuff to the reader
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.