To make it short:
I've written a (C++) command line program for educational purposes, that will print the probability distribution for almost any (<-- great exaggeration) number of dice.
The program accepts input in the form x dy , with x being the number of dice and y being the number of faces. Input of the form 2d6+3, or 3d4+1d6 is not accepted. However, y can be just about any value, you are not restricted by the limits of three-dimensional space, so it is okay to ask for the distribution of d13, or d33.
The output will look like this, without the lines (I had to put these in for propper format).
6 combinations
_______absolute__cumulated__cumulated
result__frequency__frequency__percentage
___1_________1_________1____16.6667
___2_________1_________2____33.3333
___3_________1_________3____50.0000
___4_________1_________4____66.6667
___5_________1_________5____83.3333
___6_________1_________6___100.0000
Right now, the program has one more limitation: if the number of different combinations for the specified values is larger than 4,294,967,295 the program will quit. This isn't too bad, though, since this prevents you from starting calculations that would take your computer several months or even years to finish.
(Calculating the distribution for 20d6 would take about 7 years and 4 months on my PC. )
Here are the links:
dice.exe
source code (if you are afraid of computer viruses and don't trust me )
The source code was never intended for release, so don't expect too much.
In case you would like to have the results not only on your screen, but also in a text file, you can redirect the output in the following way. Instead of starting the program by typing "dice" and pressing enter you will have to type "dice > filename.txt" and press enter. Then proceed as usual.