If you ever had to simulate random outcomes in excel sheet, you might have already heard of about the spreadsheet function rand(), this little function generates a random fraction between 0 and 1 whenever you use it. So I usually write = if I need a random number between 0 to 12. Of course, if you have analysis tool pack installed like I do, then we can use round(rand()*12,0)int(rand()*12)+1randbetween(0,12) to do the same.
In order to simulate a dice throw, thus you can use . round(rand()*5,0)int(rand()*6)+1
So, what would you do if you need to simulate the face total when you throw 2 dice?
?round(rand()*10,0)int(rand()*11)+2
Wrong
Why? Apparently a random number between 2 and 12 (1 is not possible as the minimum you can get when you throw two dice is 2) doesn’t simulate 2 dice throws properly.
The CORRECT way to do this is instead generate 2 individual random numbers and add them up, like:
round(rand()*5,0)int(rand()*6) + 1 + round(rand()*5,0)int(rand()*6) + 1
Here is why this is correct way to simulate dice throws using random number generator functions:
I have ran these 2 random functions each for 2500 times and plotted the distribution:

As you can see, the left plot of int(rand()*11)+2 tells that each of the 11 possibilities (2,3,4,5,6,7,8,9,10,11) are equally likely. But that is not what happens when you throw a dice, you see an awful lot more 5,6,7,8 than you see a perfect 12 or 2. And there is a reason for that, the distribution of 2 dice throws is actually a bell curve, and when you use int(rand()*6) + int(rand()*6) + 2 the distribution is bell curvish.
Update: Thanks to Jon for pointing out that round() is not the choice if you want random integers, you should use int instead. See his explanation in the comments and the illustration here.
I have used this logic to simulate monopoly board game and prove that it is not really that random.
More on games: Bingo / Housie ticket generator excel sheet














2 Responses to “Best of Chandoo.org – 2013”
sir i want your autograph
How many times during the year did I click on most of the pages there to learn something new? Thank you Chandoo!