Dominion is the specific example I would like to play with but this certainly applies to any game that involves decks of cards being shuffled and drawn.
I often see references to various simulations that people have run or built to test theories but whenever I dig through their code I seem to discover their simulation was custom-built for one or two test cases.
The question I am asking: How are people making these simulations so quickly? I assume that there are a few preferred (or common) ways to do this seeing how many times I see people talking about their simulations. What is a good starter kit for me to learn how to do my own?
Answers that will help: Specific languages, libraries, helpful mathematic formulae, links to projects, and typical pitfalls to avoid.