Edit: Rewritten with motivation, and hopefully more clarity.
I'm building a site for a card game called dominion. In it, people build 'decks' of 10 distinct cards from a set of (currently) approximately 80. People (will) upload their decks to the site I'm working on, where other users will rate them for quality.
What I would like to do is create a random deck generator that generates decks that are 'similar' to use-created decks. For example, if cards A and B occur frequently in isolation, but infrequently together, the decks generated should share this same property. The state required has to be relatively limited in order for me to be able to do this online.
My tentative idea is to do the following:
- Compute the sum of all ratings for all decks (call it S)
- Compute the sum of all ratings for decks that contain a given card (call it S(A))
- Compute the sum of all ratings for decks that contain any pair of cards (call it S(A∩B))
- Compute the 'weighted' conditional probability P(A|B) = S(A∩B) / S(B)
Then, to generate a random deck, follow a procedure like the following:
- Initialize a probability distribution P0(x) such that P0(x) = S(x) / S.
- Select the first card, c, using the probability distribution P0
- Compute the updated probability distribution P1(x), such that P1(x) = n P0(x) P(x|c), where n is a normalizing factor such that the integral of the distribution is 1.
- Repeat from step 2 for the next card.
The problem is, I have no idea if this is valid, or if not, what should be modified to make it so. Based on what I've read, this seems like an application of bayes' theorem, but again I have no idea if I'm getting it wrong.