William Young
United Kingdom

Hi there!
I've got a bit of a conundrum with a mod for Magic The Gathering that I've been developing for gaming casually with a few friends of mine that I'd like some help with, please.
What I can't figure out is how to assign each player an opponent both secretly and randomly, which will be for the entire duration of a 4 player game. Essentially, the idea is that each player knows who to 'hunt' i.e. defeat in order to win, but each hunted doesn't know the identity of their hunter.
Whatever system for doing this cannot involve use of smartphones apps, as not everyone playing has access to one of these; it needs to be done with physical objects like dice, tokens, cards, pencil and paper, etc.
I've tried using cards, where each of 4 cards references a player, but unfortunately there's always the possibility that you might draw your own card, thus undesirably nullifying opponent assignment, and, if you say, as the first player to draw an card for opponent assignment, kept your card out and drew randomly for the remaining 3, that's fine for you, but then, when you add your card in for the next player to potentially draw as an opponent from 3, there's the problem that that player could draw their own card, as it may still be in that pile, and if they examine the cards to extract their own to prevent them from drawing it, they then find out which card the first player drew.
The key concerns with a system for this seem to be: 1. Making sure that opponent assignment is random 2. Making sure you can't assign yourself as an opponent 3. Making sure that there is no way in which a hunter's identity can be revealed
I'm finding this a real headscratcher! Hopefully some kind of solution is physically possible somehow!

Jeremy Lennert
United States California

You're trying to create a derangement.
One way to do this is to deal the cards randomly, and then if anyone got themself, reshuffle the entire deck and deal them out again. This takes about 3 tries on average before no one has themself.
There's also a popular algorithm for this that uses pairs of cards. You create a card that says "you are A" and another card that says "you are targeting A", then do the same for B, C, etc. up to the number of players. The "you are" cards should all have the same backs as each other, but different backs from the "you are targeting" cards.
Put both of the "A" cards together in an envelope, put both of the "B" cards in an envelope, etc. and shuffle the envelopes. Now, every envelope has a matching pair of cards, and you don't know which envelope is which.
Arrange the envelopes in a circle. From each envelope, take out the "you are ___" card (without looking at the front) and move it one envelope clockwise around the circle. Now, every envelope has one "you are" card and one "targeting" card, and none of them match, but you know that every envelope is targeting the one to its left.
Shuffle the envelopes again.
Each player opens an envelope, puts their "you are ___" card faceup in front of them for everyone to see, and keeps their "you are targeting ___" card secret.
This algorithm is guaranteed to produce a derangement every time; however, there are some derangements that it can't produce at all, because it always connects everyone in a single circular arrangement (you just don't know where everyone is "sitting" in this circle). For instance, you can't get a situation where A and B are both targeting each other and C and D are both targeting each otherthat's a valid derangement, but it's not a single circle, so this method will never produce it.
Depending on how your game works, this might be a feature or a problem.

Graham Muller
South Africa Cape Town

You are right this is not an easy problem
In fact just doing it randomly means 15/24 times someone will pick themselves in a 4 player game. So randomly doing it might result in a lot of redraws.
Although 6 of those are the first player drawing themselves. So if first player draws until its not them, and then reshuffle then 9/18 times the other players will get a duplicate. So you will need to perform a redraw every second time.
This of course assumes each player has already chosen their colours. But maybe there is a way to assign player colours and their opponent at the same time...

William Young
United Kingdom

Fantastic response, Jeremy! Thanks ever so much for your help! Thank you also Graham for those useful statistics!

William Young
United Kingdom

Regarding your technique's limitation you mention in your penultimate paragraph, Jeremy, this limitation to me actually serves as an advantage and has exceeded my expectations about how to resolve the effect I desire; having nonreciprocal opponent assignment I feel actually makes the game more interesting and fits very nicely with my idea of 'hunter' and 'hunted' players! Thanks again!

Tor Iver Wilhelmsen
Norway Oslo Unspecified

Lifeboat solved this by having rules for what happens if you got yourself as the love or hate target.
Risk (using the secret missions module) solves the case where you have a mission to eliminate a color (and you are that color or it is not in play) by having an alternate condition (occupy a number of regions).

Chris Nash
United Kingdom

I can think of a way to do it which is:
 physical (only uses cards)  easy to setup (unlike the circle of envelopes algorithm  a very nice algorithm indeed!)
However, it's component heavy  it requires 96 cards.
First, create a set of 4 cards. These have simply the letters A, B, C and D on one side. On the other side, they have the letter of the player they are targeting  for example: A (other side: you are targeting B) B (other side: you are targeting C) C (other side: you are targeting D) D (other side: you are targeting A) Clearly this allows for you to make sure that no player is targeting themselves. But, I hear you cry, after one game everyone will know who everyone is targeting.
That's why you need another 92 cards  4 each for each of the 24 combinations of letters. Each set of 4 cards will need to be bagged separately, and will look identical from the front side  simply the letters A, B, C and D.
For a game, the players select a set of 4 cards randomly, get them out and deal them randomly without looking at the other side, and then each player looks at the back of their own card. The card can be left out in front of the players during the game as a reminder of each player's letter.
You're welcome.

Jeremy Lennert
United States California

Nashman88 wrote: That's why you need another 92 cards  4 each for each of the 24 combinations of letters. How did you get 24 combinations? For 4 players, I'm only getting 9.
A>B>C>D>A A>B>D>C>A A>C>B>D>A A>C>D>B>A A>D>B>C>A A>D>C>B>A A<>B C<>D A<>C B<>D A<>D C<>B
Of course, if you ever increase the number of players, you get a combinatoric explosion in the number of possibilities. And you need a completely separate set of sets of cards for every possible player count.


