Sort of OT: Dice odds - Printable Version +- HP Forums (https://archived.hpcalc.org/museumforum) +-- Forum: HP Museum Forums (https://archived.hpcalc.org/museumforum/forum-1.html) +--- Forum: Old HP Forum Archives (https://archived.hpcalc.org/museumforum/forum-2.html) +--- Thread: Sort of OT: Dice odds (/thread-194469.html) Sort of OT: Dice odds - Dave Britten - 09-12-2011 I'm already familiar with calculating the odds of getting a certain number of specific individual results when rolling an arbitrary number of dice (simple binomial distribution). But a fair amount of Google searching and working out numbers by hand hasn't led me to a general formula for calculating the odds of getting a certain total when rolling an arbitrary number of dice. (e.g. What are the odds of rolling a total of 17 or greater using four standard 6-sided dice?) This looks like some form of binomial expansion, but I'm drawing a blank putting it all together. And I can always post a 15c implementation of the calculation, since that's the hot topic at the moment. ;) Re: Sort of OT: Dice odds - M. Joury - 09-12-2011 Try this page: Chance of total with 'x' dice From the above page: This section endeavors to answer the frequently asked question on the probability for any given total over the throw of multiple dice. ... My method was a recursive computer program. No, I don't know of an easy non-recursive formula. Hope this helps. Cheers, -Marwan Re: Sort of OT: Dice odds - Dave Britten - 09-12-2011 I was afraid I might have to resort to that. Now, to really complicate things, I also want to be able to do this with non-standard dice. For example, a 6-sided die with faces reading 0, 0, 0, 1, 1, 2, or something like that, and maybe even mixtures of different dice. I'll have to see how far I can take this on the 15c LE when it shows up, though honestly I think this would be easiest to implement with SQL and liberal use of cross joins. Re: Sort of OT: Dice odds - M. Joury - 09-12-2011 SQL? If you end up going that route I would love to see how you do it. Although I would not consider myself a SQL programmer (C, C++, C#) I do program SQL on a regular basis for my job and solving this using SQL would never (never did) even occur to me! Cheers, -Marwan Re: Sort of OT: Dice odds - Egan Ford - 09-12-2011 This smells of Project Euler. I'm afraid you are going to have to tough it out like the rest of us have. :-) Re: Sort of OT: Dice odds - Dave Britten - 09-12-2011 Ha ha, I was wondering if there might have been one on there like that. I should check my Project Euler source code and see if I solved it and forgot about it. Actually, I'm more interested in game play and/or design at the moment, and figuring these things out mathematically could come in handy. Re: Sort of OT: Dice odds - Dave Britten - 09-12-2011 Sure, here's what I slopped together for SQL Server (I'm assuming you have access to that, with C# background). The memory/CPU usage gets really out of hand with a large number of dice. Doing 7 six-sided dice takes about 10 seconds on an 8-core server with 32 GB RAM. But you can mix and match types of dice, and do non-standard dice. You'll also need to have my string split function in the current database. Re: Sort of OT: Dice odds - M. Joury - 09-12-2011 Thanks Dave! Re: Sort of OT: Dice odds - Thomas Klemm - 09-12-2011 Quote: What are the odds of rolling a total of 17 or greater using four standard 6-sided dice? There's a function glob in Perl that does the cross joins. For example, this produces nine strings, one for each pairing of fruits and colors: @many = glob "{apple,tomato,cherry}={green,yellow,red}"; That's the program I came up with: ```#!/usr/bin/perl use strict; use warnings; my \$dice = '+{1,2,3,4,5,6}'; my \$n = 4; my %seen; for my \$roll (glob \$dice x \$n) { my \$sum = eval \$roll; \$seen{\$sum}++; }; my \$total = 0; for my \$value (sort { \$a <=> \$b } keys %seen) { printf <