I have drafted a game that uses a French Deck with 52 cards, 4 suites (diamonds, clubs, hearts, spades), and no jokers.

I'm interested in profiling game play along a few axes:

  • How many turns are there in a typical game with different play strategies?
  • If I change the winning condition from, say, getting all four queens to getting all four jacks, how much longer or shorter is play. This would make an actual difference in my game, but I'd like to quantify that difference.
  • How frequently will players have matching ranks for the cards they play if I force them to play a random card from their deck versus selecting which card to play?

Besides those, I could think of other ways to tweak the game, and I want to know what effect that has without manually playing the game several times in real life.

It would be possible to get this information by using some ad-hoc scripting on my computer to calculate values for the specific cases I mention above. However, adding more measurements, could require changing or improving my model of the game which takes more work. What would be better is a suite of computer programs that would allow me to change rules and gather new statistics without, in general, needing to add additional instrumentation to the game engine. Does such a suite of programs already exist?

I have seen this question which is similar to my own, but the poster requests statistics for a much more specific condition. I am looking for a general tool. I am hoping that the situation has changed since the original negative answer.

  • 1
    According to wiki, there is no standard size for a French Deck- which size are you using? Feb 15, 2015 at 23:12
  • 52 cards, 4 suits (H,D,S,C), no jokers.
    – markw
    Feb 16, 2015 at 2:16
  • 3
    Sorry I don't see how your question is any different from the one you're citing. This is strictly a DIY programming exercise. You could look into object oriented programming (eg Java) and model the game yourself so you can run simulations.
    – freekvd
    Feb 17, 2015 at 7:59
  • Thanks for taking the time to read over my question. I readily acknowledge that the questions are similar, and that's why I cite it. I've modified my question to show how it differs from the other. Will I end up making my own solution? Probably, if I get a chance. Is there any harm in asking if someone has already? Nope.
    – markw
    Feb 18, 2015 at 3:41
  • 1
    I think "I am hoping that the situation has changed since the original negative answer" is pretty key here. If the situation has changed, it would be appropriate for there to be a new answer to the original question, and for the community to curate the information there. Mar 6, 2015 at 21:16

2 Answers 2


If you have a small amount of experience programming, you could achieve your goals here pretty easily, and as customized as you need. If you want graphs and other 'pretty' output, I suggest R.


This answer is going to repeat the answer to the question you cited, but add emphasis on one point:

Running simulations is the key. You do what Adam's answer said: trying out random combinations and just reducing the results to some numbers you can compare.

The relevance to your question is this: these simulations are, by definition, general. The method involves trying out everything, and basing the result on some defined requirements you have specified (step 3 in Adam's answer). The results at the end are determined by those requirements.

If you want to be general for any requirement, just change the requirement. You still run a simulation, and you different numbers at the end because they're based on different conditions.

Of course, you still need to write out the function (and it is a bitch, trust me) and you need to write every requirement you're going to use, but you'll get what you're after.

Tan's answer still holds too: some languages make statistics far easier to display than others. If you were more comfortable in a language other than R, you could export your results to a text file from one language you are confident in, and then import them using borrowed R code, if you want to be lazy. Which is never a bad thing.

Not the answer you're looking for? Browse other questions tagged .