Personal computing discussed

Moderators: renee, SecretSquirrel, just brew it!

 
Sargent Duck
Grand Gerbil Poohbah
Topic Author
Posts: 3220
Joined: Thu Mar 13, 2003 8:05 pm
Location: In my secret cave that has bats

need a dice simulation software

Sun May 29, 2011 11:04 pm

I'm involved in a project and need to create a dice simulation program using the following custom dice:
dice 1: -5, 0, 0, +5, +5, +5
dice 2: -15, -10, 0, +10, +10, +15
dice 3: -20, -15, -10, +10, +20, +25

and I'd need to output this to a .csv file or .xls so I can graph/evaluate it.

Using Excel (and a healthy dose of Bing), I was able to come up with the following:

dice 1: =INDEX({-5,0,0,5,5,5},RANDBETWEEN(1,6))
dice 2: =INDEX({-15,-10,0,10,10,15},RANDBETWEEN(1,6))
dice 3: =INDEX({-20,-15,-10,10,20,25},RANDBETWEEN(1,6))

Now, is there any way in Excel to automate this and graph it? I'm thinking maybe some sort of macro? (which I don't know how to do).

If not, can anybody point me on a tutorial (I'm still looking as I write this) on how to do this?

Thanks.
No matter how bad the new homepage sucks or how bungled the new management is...

To all the original writers/contributors and volunteers, please know that I have nothing but the deepest love for you and the work you've done.
 
wibeasley
Gerbil Elite
Posts: 952
Joined: Sat Mar 29, 2008 3:19 pm
Location: Norman OK

Re: need a dice simulation software

Mon May 30, 2011 1:47 am

What are you going to graph? Timelines? Sampling error?

If you're going to be doing a lot of this stuff in the future, it might be worth learning a stat software language. All this stuff, including graphing, would be less than 40 lines of code in R.
 
wibeasley
Gerbil Elite
Posts: 952
Joined: Sat Mar 29, 2008 3:19 pm
Location: Norman OK

Re: need a dice simulation software

Mon May 30, 2011 2:18 am

rm(list=ls(all=TRUE)) #Remove any existing variable values.

replicationCount <- 10000000
faceIDs <- 1:6
diceCount <- 3
dice1Values <- c(-5, 0, 0, 5, 5, 5)
dice2Values <- c(-15, -10, 0, 10, 10, 15)
dice3Values <- c(-20, -15, -10, 10, 20, 25)
diceValues <- cbind(dice1Values, dice2Values, dice3Values) #Bind them as columns.

sampledFaces <- matrix(sample(x=faceIDs, size=diceCount*replicationCount, replace=T), ncol=diceCount) #Store the index of the sampled face; this is where most of the work is done.
sampledValues <- matrix(rep(NA, length(sampledFaces)), ncol=diceCount) #For storing the value of the rolled dice.

for( diceIndex in 1:diceCount ) {
  sampledValues[, diceIndex] <- diceValues[sampledFaces[, diceIndex], diceIndex]
}

expectedValues <- colMeans(diceValues)
sampleValues <- colMeans(sampledValues)
rbind(expectedValues, sampleValues) #Bind them as rows.

The output is
               dice1Values dice2Values dice3Values
expectedValues    1.666667    1.666667    1.666667
sampleValues      1.666109    1.666702    1.674519

I bet you could make two rough graphs in 15-20 lines of code.
Edit: To simulate loaded dice, specify a vector as the 'prob' argument in the 'sample' function.
 
JustAnEngineer
Gerbil God
Posts: 19673
Joined: Sat Jan 26, 2002 7:00 pm
Location: The Heart of Dixie

Re: need a dice simulation software

Mon May 30, 2011 5:22 am

FYI, the singular is "die." "Dice" is a plural noun. For a small number of fair dice with a small number of sides as in your example, you could enumerate them all in a spreadsheet easily enough. You have only 216 possible combinations with three six-sided dice.
 
just brew it!
Administrator
Posts: 54500
Joined: Tue Aug 20, 2002 10:51 pm
Location: Somewhere, having a beer

Re: need a dice simulation software

Mon May 30, 2011 6:10 am

How automated does it need to be? You can easily copy the formula into multiple cells by selecting a vertical range and using the "fill down" shortcut (Ctrl-D). Force a recalculate (Ctrl-Alt-F9 in Excel, Ctrl-Shift-F9 in OpenOffice Calc) and you should get a new set of random numbers.

Caveat: If you need results which will pass rigorous statistical tests for randomness, I am not sure how much I would trust the spreadsheet's built-in random number generator.

On the whole die/dice thing: Gotta love the English language! (For consistency's sake, the singular of "mice" should really be "mie". Or maybe the singular of "dice" should be "douse"! :lol:)

Edit: This thread wasn't inspired by last Friday's xkcd by any chance, was it? :lol:
Nostalgia isn't what it used to be.
 
mboza
Gerbil Team Leader
Posts: 203
Joined: Fri Sep 15, 2006 6:52 am

Re: need a dice simulation software

Mon May 30, 2011 8:29 am

What do you actually want to get out of it?

Mean, variance, probability distribution graph, cumulative distribution graph? The first two are calculable without resorting to a random number generator, and the graphs are easy enough to plot by generating all 216 values in excel with a tiny amount of copy and paste action, then probably something with the histogram function?

Or are you wanting to simulate actual throws of the 3 dice, and have a list of result 1, result 2, ...?
 
Sargent Duck
Grand Gerbil Poohbah
Topic Author
Posts: 3220
Joined: Thu Mar 13, 2003 8:05 pm
Location: In my secret cave that has bats

Re: need a dice simulation software

Mon May 30, 2011 9:25 pm

Apologies for the lateness of the reply. Work was a gong show (sigh, my computer crashed) and right after I went out, so I'm just now sitting down on the computer.

Let me try to answer your questions, starting with a clarification for mboza (and everybody else). I kinda knew what I wanted yesterday, but couldn't put it into words. Today I can.

First, what I want to insure is that the dice have a really high confidence interval with the rolls (apologies if I muck this next part up. I hated stats and fell asleep during class oh so many years ago). My project for the die is to be as random as possible, such that there is no discernable pattern.

In my project, participants can play either die 1, 2, 3, dice 1&2, 2&3 or all three. What I want to make sure is that there is no discernable pattern to how the dice are rolled.

For example, let's say (hypothetically speaking and making these numbers up) that for the first 10 throws of the die, die 2 has a tendency to roll positives, then plummet with negatives. This behaviour (rolling positives right off the bat) would be very bad as particpants would be able to start seeing a pattern, that they should roll die 2 for the first couple of rolls, then switch to another die before the negatives start coming. I want to insure that when die 2 (or any dice is rolled), that there is no discernable pattern to how it rolls.

Does that make sense? I can provide a specific example of exactly what I'm doing, but I think this should suffice. If not, let me know and I'll attempt to re-explain.

JustAnEngineer wrote:
FYI, the singular is "die." "Dice" is a plural noun.
moose/meese? Your FYI has been noted, and I hope I've corrected the usage going forward.


just brew it! wrote:
How automated does it need to be? You can easily copy the formula into multiple cells by selecting a vertical range and using the "fill down" shortcut (Ctrl-D). Force a recalculate (Ctrl-Alt-F9 in Excel, Ctrl-Shift-F9 in OpenOffice Calc) and you should get a new set of random numbers.
I have no problem hitting "refresh" in Excel. Ideally I'd like a good sample size of 1000 rolls or so. So automated = bonus.

just brew it! wrote:
Caveat: If you need results which will pass rigorous statistical tests for randomness, I am not sure how much I would trust the spreadsheet's built-in random number generator.
Haha, agreed. I have Excel and know how to work in it. I don't know how to program in any language (well, that's not true. I did teach myself CSS)


just brew it! wrote:
Edit: This thread wasn't inspired by last Friday's xkcd by any chance, was it? :lol:
LOL. Nope.
No matter how bad the new homepage sucks or how bungled the new management is...

To all the original writers/contributors and volunteers, please know that I have nothing but the deepest love for you and the work you've done.
 
wibeasley
Gerbil Elite
Posts: 952
Joined: Sat Mar 29, 2008 3:19 pm
Location: Norman OK

Re: need a dice simulation software

Mon May 30, 2011 10:21 pm

The Excel RNG itself should be random enough for a human not to detect a bias. But it's still a good idea to test the long-run averages, to identify any implmentation/coding mistakes that you've made.

If you're worried about them seeing a pattern, consider using a predetermined sequence. One that's constant across all subjects. It's not that unlikely to roll five out of six heads of a coin (=9.3% = 6*.5^6; and another 9% for 5/6 tails), but many people will assign a pattern to it. If you have a large sample size, many of them will receive one of those apparently nonrandom sequences. A predetermined, constant sequence also will minimize an unnecessary source of between-subject variability, which will improve the power of your statistical test.

What's being graphed?
 
bthylafh
Maximum Gerbil
Posts: 4320
Joined: Mon Dec 29, 2003 11:55 pm
Location: Southwest Missouri, USA

Re: need a dice simulation software

Mon May 30, 2011 10:48 pm

FWIW Debian's got a rolldice package which can roll arbitrary types and numbers of dice. You can grab the source code and I'd bet it would compile in Cygwin.

http://packages.debian.org/squeeze/rolldice
Hakkaa päälle!
i7-8700K|Asus Z-370 Pro|32GB DDR4|Asus Radeon RX-580|Samsung 960 EVO 1TB|1988 Model M||Logitech MX 518 & F310|Samsung C24FG70|Dell 2209WA|ATH-M50x
 
Sargent Duck
Grand Gerbil Poohbah
Topic Author
Posts: 3220
Joined: Thu Mar 13, 2003 8:05 pm
Location: In my secret cave that has bats

Re: need a dice simulation software

Sun Jun 26, 2011 9:07 pm

Hey guys, thanks for all your help.

My problem was that I knew what I wanted, but I didn't really. Eventually, haha, I was able to get what I wanted using a histograph.

Just wanted to say thanks for your help.
No matter how bad the new homepage sucks or how bungled the new management is...

To all the original writers/contributors and volunteers, please know that I have nothing but the deepest love for you and the work you've done.

Who is online

Users browsing this forum: No registered users and 1 guest
GZIP: On