November 7, 2012 10:52 AM Subscribe

What's a good algorithm by which to split a group of 185 people into groups of 8-10?

I'm organizing a retreat for 185 people who work together. For the first evening, I want to assign people to tables so they don't all sit with the same people they already know (and 1/3 of the group is less than a year with the company, so I want to help them mix). I'd love to be able to split people up by some formula that they can try to work out over the course of dinner.

I had thought to use 2nd letter of last name, but then I mistakenly sent that out to the group in a notes file, so that and anything related to it is out.

I'm limited to information that I can easily get from what I know about my colleagues or from non-confidential information that HR can give me. I can't reasonably scan facebook for favorite movies or similar, given the number of people involved, more's the pity!

Any ideas?
posted by rosa to Human Relations (26 answers total) 1 user marked this as a favorite

I'm organizing a retreat for 185 people who work together. For the first evening, I want to assign people to tables so they don't all sit with the same people they already know (and 1/3 of the group is less than a year with the company, so I want to help them mix). I'd love to be able to split people up by some formula that they can try to work out over the course of dinner.

I had thought to use 2nd letter of last name, but then I mistakenly sent that out to the group in a notes file, so that and anything related to it is out.

I'm limited to information that I can easily get from what I know about my colleagues or from non-confidential information that HR can give me. I can't reasonably scan facebook for favorite movies or similar, given the number of people involved, more's the pity!

Any ideas?

How about the month of the year that they started working for the company? Or the day of the month?

posted by grouse at 10:54 AM on November 7, 2012

posted by grouse at 10:54 AM on November 7, 2012

birth month / astrological sign? length of last name?

posted by katieanne at 11:00 AM on November 7, 2012

posted by katieanne at 11:00 AM on November 7, 2012

"You are not allowed to sit adjacent to anyone you know" is an effective distributed algorithm for this.

The trouble with trying to assign table number based on a hash of personal information like last name / start date / birth date is that even if you get a uniform random distribution (hard to do with any of the strategies suggested - metrics like last name and birth date aren't uniformly distributed), statistically just due to variance you're going to have some tables with 6 people and some with 14.

posted by qxntpqbbbqxl at 11:05 AM on November 7, 2012 [2 favorites]

The trouble with trying to assign table number based on a hash of personal information like last name / start date / birth date is that even if you get a uniform random distribution (hard to do with any of the strategies suggested - metrics like last name and birth date aren't uniformly distributed), statistically just due to variance you're going to have some tables with 6 people and some with 14.

posted by qxntpqbbbqxl at 11:05 AM on November 7, 2012 [2 favorites]

What about just using 19 sets of 10 index cards each with a symbol or a number or whatever on it, and have them draw when they get there? I realize that isn't something that can be worked out, but it'll get you where you want to go.

posted by dpx.mfx at 11:07 AM on November 7, 2012 [1 favorite]

posted by dpx.mfx at 11:07 AM on November 7, 2012 [1 favorite]

Figure it out ahead of time and put a table code on the back of their name badges.

posted by carmicha at 11:08 AM on November 7, 2012

posted by carmicha at 11:08 AM on November 7, 2012

(Oops - hit post too soon). That way you can control for all variables and they can spend the dinner hour socializing--which is the point of the exercise--or doing something else more productive than figuring out your trick for organizing the tables.

posted by carmicha at 11:10 AM on November 7, 2012 [1 favorite]

posted by carmicha at 11:10 AM on November 7, 2012 [1 favorite]

I think most of you are missing the point -- the idea is for a fun icebreaker type puzzle for people to figure out. OP isn't just looking for a practical way of picking the tables / informing people of their assignments.

posted by Perplexity at 11:25 AM on November 7, 2012 [1 favorite]

posted by Perplexity at 11:25 AM on November 7, 2012 [1 favorite]

Given the difficulty of finding a distribution that breaks up perfectly like "qxntpqbbbqxl" pointed out above, perhaps you need to start with a way to rank everyone from 1-185 first, and then divide that into groups every 8-10 people from 1-185.

So, the day people started would be a good way to do this, but if you are trying to create an ice-breaker that requires them to talk amongst themselves it might be pretty obvious to the people once they see the first and last tables, if the first table has the founders and the last has the recently hired interns, for example.

So, what are other odd ways to rank people that you could get from information that you have available that could be fun to figure out.

If you have their cellphone numbers, you could sort those into numerical order (212-555-1234 becomes 2,125,551,234). That could be interesting because there would be a neat geographical split based on where people happened to live when they got that cell number, but you would still be able to split people up by more than the area code along in ordering it numerically.

Another neat one may be to put each name into Google and use the total number of results given for that exact name (maybe in quotes). Thus, the more common names (John Smith, etc) would be at one table, and the more unusual names would be at the end. It is a bit less like a popularity contest than something like "number of facebook friends" because it is somewhat based on how common their name is. You could make it more abstract, by just using their last names, though if there are several people with the same last name they would end up together.

posted by This_Will_Be_Good at 11:27 AM on November 7, 2012 [1 favorite]

So, the day people started would be a good way to do this, but if you are trying to create an ice-breaker that requires them to talk amongst themselves it might be pretty obvious to the people once they see the first and last tables, if the first table has the founders and the last has the recently hired interns, for example.

So, what are other odd ways to rank people that you could get from information that you have available that could be fun to figure out.

If you have their cellphone numbers, you could sort those into numerical order (212-555-1234 becomes 2,125,551,234). That could be interesting because there would be a neat geographical split based on where people happened to live when they got that cell number, but you would still be able to split people up by more than the area code along in ordering it numerically.

Another neat one may be to put each name into Google and use the total number of results given for that exact name (maybe in quotes). Thus, the more common names (John Smith, etc) would be at one table, and the more unusual names would be at the end. It is a bit less like a popularity contest than something like "number of facebook friends" because it is somewhat based on how common their name is. You could make it more abstract, by just using their last names, though if there are several people with the same last name they would end up together.

posted by This_Will_Be_Good at 11:27 AM on November 7, 2012 [1 favorite]

Right, Perplexity has it -- this is a bunch of software developers, and lots of them are shy, so I'm hoping that having a shared project/puzzle to work on will help to break the conversational ice.

I also want it to be reasonably conceivable that groups who care to solve it could, in fact, solve it, which I think the google search results one is a little too hard.

Thanks for the ideas so far!

posted by rosa at 11:48 AM on November 7, 2012

I also want it to be reasonably conceivable that groups who care to solve it could, in fact, solve it, which I think the google search results one is a little too hard.

Thanks for the ideas so far!

posted by rosa at 11:48 AM on November 7, 2012

Doing some sort of hash function is of course what you're asking for really, and a concept that would be familiar to most software developers.

An obvious one to me would be to take the numerical values for all the letters in their first names (A=1, B=2, ..., Z=26), take the sum, and then find the modulo remainder when dividing by the number of groups you wish to make.

Any hash function like this is unlikely to make the groups exactly evenly sized though, but the only way to see how bad the distribution would be to try it.

posted by noonewilleverloveyou at 12:02 PM on November 7, 2012 [1 favorite]

An obvious one to me would be to take the numerical values for all the letters in their first names (A=1, B=2, ..., Z=26), take the sum, and then find the modulo remainder when dividing by the number of groups you wish to make.

Any hash function like this is unlikely to make the groups exactly evenly sized though, but the only way to see how bad the distribution would be to try it.

posted by noonewilleverloveyou at 12:02 PM on November 7, 2012 [1 favorite]

If you do the cell phone number thing, put the numbers in reverse order so the people from the same area code don't wind up together.

posted by carmicha at 12:15 PM on November 7, 2012

posted by carmicha at 12:15 PM on November 7, 2012

As mentioned before, you take the list of 185 people, sort it according to some (continuous)algorithm, then divide into segments; it won't work well to use an algorithm that is self-segmenting.

i.e. take all the last names, reverse the order of letters (Smith-->htims) then alphepetize the list. But not "arrange table by last letter of name" because then there's an "h" table that will be a vastly different size than the "n" table.

So, given that, sort the list by:

- reversed last names (htimS)

- truncated last names (-mith)

- cell phone number minus area code (555-1234)

- reversed cell phone number (4321-555-212)

- birthday (ignoring year)

- first day of work (ignoring year)

- house number of home street address

Probably not a great idea to base things on first names, since there's often a difference between HR records and the working name, which would make things really hard to figure out.

posted by aimedwander at 12:16 PM on November 7, 2012

i.e. take all the last names, reverse the order of letters (Smith-->htims) then alphepetize the list. But not "arrange table by last letter of name" because then there's an "h" table that will be a vastly different size than the "n" table.

So, given that, sort the list by:

- reversed last names (htimS)

- truncated last names (-mith)

- cell phone number minus area code (555-1234)

- reversed cell phone number (4321-555-212)

- birthday (ignoring year)

- first day of work (ignoring year)

- house number of home street address

Probably not a great idea to base things on first names, since there's often a difference between HR records and the working name, which would make things really hard to figure out.

posted by aimedwander at 12:16 PM on November 7, 2012

You could also come up with bits of entropy based on clothing and personality characteristics; that would be fun, but again, hard to distribute evenly.

I.e., everyone gets number represented by a binary string according to this (no=0,yes=1), then they sort themselves (developers should be able to figure this out) and use the sort order to break into groups of 8-10.

Are you wearing blue? [0,1]

Ice cream: Vanilla [0] or strawberry [1]?

Are you left-handed? [0,1]

Do you wear glasses? [0,1]

etc... have to be careful to steer clear of anything that might be offensive, tho

You'll need at least 8 bits, but more will give you fewer collisions.

posted by qxntpqbbbqxl at 12:25 PM on November 7, 2012

I.e., everyone gets number represented by a binary string according to this (no=0,yes=1), then they sort themselves (developers should be able to figure this out) and use the sort order to break into groups of 8-10.

Are you wearing blue? [0,1]

Ice cream: Vanilla [0] or strawberry [1]?

Are you left-handed? [0,1]

Do you wear glasses? [0,1]

etc... have to be careful to steer clear of anything that might be offensive, tho

You'll need at least 8 bits, but more will give you fewer collisions.

posted by qxntpqbbbqxl at 12:25 PM on November 7, 2012

old standby:

Ascending/descending Numeric Value of the last/full names

Full is harder to work out (for you and them) but good to use if you have a lot of people with the same last name, couples, who could be a huge potential give away

So table 1 starts with Ann Bobble (67)...Table 9 ends with Zanzabar Quernexity (247)

posted by French Fry at 12:41 PM on November 7, 2012 [2 favorites]

Ascending/descending Numeric Value of the last/full names

Full is harder to work out (for you and them) but good to use if you have a lot of people with the same last name, couples, who could be a huge potential give away

So table 1 starts with Ann Bobble (67)...Table 9 ends with Zanzabar Quernexity (247)

posted by French Fry at 12:41 PM on November 7, 2012 [2 favorites]

Nice touch is that it is not a super hard puzzle but it has a lot in common with *easier* puzzles. Word length, or Alphabetizing. So names like Abe Zachs will be sitting with Ann Bobble not Zanzabar.

Unless the point of the gathering is the puzzle, then you might want to go with something harder.

But I still like puzzles that use everyone's name because that arms people with equal knowledge. As opposed to details about their hiring, which only they would know, and then maybe have forgotten.

posted by French Fry at 12:48 PM on November 7, 2012

Unless the point of the gathering is the puzzle, then you might want to go with something harder.

But I still like puzzles that use everyone's name because that arms people with equal knowledge. As opposed to details about their hiring, which only they would know, and then maybe have forgotten.

posted by French Fry at 12:48 PM on November 7, 2012

Buy 4 decks of cards. Remove all the deuces, remove half of the threes and then add back one deuce. Have participants draw cards when they come in the door.

For seating:

Aces of Spades and Clubs 1 table of 8

Aces of Diamonds and Hearts 1 table of 8

Kings of Spades and Clubs 1 table of 8

etc.

Your remaining trey cards and 1 deuce card (9 people) become the extra people at various tables or 1 table on their own.

You now also have a way of splitting up into 2 groups (by red/black) 4 groups (by suit) and into 12 groups (A/K/Q/J 10/9/8/7 6/5/4/3/2)

If you buy decks with different backs, you can also do subgroups based on that.

posted by jaimystery at 1:19 PM on November 7, 2012

For seating:

Aces of Spades and Clubs 1 table of 8

Aces of Diamonds and Hearts 1 table of 8

Kings of Spades and Clubs 1 table of 8

etc.

Your remaining trey cards and 1 deuce card (9 people) become the extra people at various tables or 1 table on their own.

You now also have a way of splitting up into 2 groups (by red/black) 4 groups (by suit) and into 12 groups (A/K/Q/J 10/9/8/7 6/5/4/3/2)

If you buy decks with different backs, you can also do subgroups based on that.

posted by jaimystery at 1:19 PM on November 7, 2012

Alternately: scrabble values of names.

posted by modernserf at 1:19 PM on November 7, 2012 [1 favorite]

I am not sure if this will work for you, but here it is.........

You could go with a straight randomization of names. In Google docs, I set up this sheet, "Randomizing_Sheet" that has 30 names. In Column A, I set up sections of 10. In column B, there is the formula RANDBETWEEN and in column C, the names. (They are "junk" names that I pulled and randomized the first and last combo. Any similarity to a real person is unintentional).

Anyway, by sorting columns B & C (DATA>>SORT RANGE>>SORT), the names can be re-arranged so there is a random pull each time. While the whole thing is a bit manual and clumsy, you are not talking about a million people, so for the 185, it should be not hard to manage.

If you like it and want me to expand it, just let me know via MeMail.

posted by lampshade at 1:20 PM on November 7, 2012

You could go with a straight randomization of names. In Google docs, I set up this sheet, "Randomizing_Sheet" that has 30 names. In Column A, I set up sections of 10. In column B, there is the formula RANDBETWEEN and in column C, the names. (They are "junk" names that I pulled and randomized the first and last combo. Any similarity to a real person is unintentional).

Anyway, by sorting columns B & C (DATA>>SORT RANGE>>SORT), the names can be re-arranged so there is a random pull each time. While the whole thing is a bit manual and clumsy, you are not talking about a million people, so for the 185, it should be not hard to manage.

If you like it and want me to expand it, just let me know via MeMail.

posted by lampshade at 1:20 PM on November 7, 2012

If HR could give you the last place they went to school, you could sort that by location somehow (east to west for example). If they get to talking about where they're from they might figure it out.

posted by cali59 at 2:02 PM on November 7, 2012

posted by cali59 at 2:02 PM on November 7, 2012

Seconding scrabble tile value of names.

What information do you have available to you about the 185 participants?

posted by troika at 2:03 PM on November 7, 2012

What information do you have available to you about the 185 participants?

posted by troika at 2:03 PM on November 7, 2012

Give them all a name tag with a small sequence of digits or letters on it below their name. Make a puzzle based on that given sequence. For example, the numbers at each table might all be mutually prime. Or the letters at a table might join together into an anagram of the company name/motto/etc. The numbers might be Unicode numbers for characters that form a word. Maybe the letters on each person's tag at a table are an anagram of the name of another person at that table. Maybe the numbers are coordinates that, when plotted, depict the company logo. The possibilities are endless if you give them a little code puzzle piece like that.

posted by Salvor Hardin at 2:21 PM on November 7, 2012

posted by Salvor Hardin at 2:21 PM on November 7, 2012

Ok. This idea may be way too wild but whatever....I am a teaching artist and have had to break people up into groups in so many ways for purposes that allow them to get to know each other quickly and work together creatively. I find that getting people focused on a task immediately to work together kills two birds with one stone: Stone #1-The goal is to complete the task so they have to just do it (which includes getting into groups.) Stone #2-social boundaries/comforts are less of a priority because they have to work together so they get to know each other.

I do not know what kind of space you're working in or the field of work you do but here is a fun/wacky suggestion:

A Game called "Huggies"

-Get participants to walk around the space and call out different numbers of groups of people they have to get into (for instance: call out the number 3, and they have to get in groups of 3, call out 8 and they have to get in a group of 8 people...etc.)

-After they've done that for a while, then get them to use body parts with the numbers. (for instance: get into a group where you can connect 3 elbows; get into a group where you connect 8 knees..etc)

-If you know how many people you want in a group, you could have them do "Huggies" until you get to that number and then ask them to do something else like: "tell the person next to you the 1st nickname you've ever had. Or, "in 3 sentences, sum up the last 3 years of your life to the person next to you"

See! They are focused on a ridiculous task that gets them into groups AND they get to know other each other in ways they would not otherwise. Then, they can sit at tables and talk, eat, whatever.

I've done this kind of thing with 1st graders to executives in the public/private sector. NEVER FAILS.

Good Luck!

posted by Hydrofiend at 2:35 PM on November 7, 2012

I do not know what kind of space you're working in or the field of work you do but here is a fun/wacky suggestion:

A Game called "Huggies"

-Get participants to walk around the space and call out different numbers of groups of people they have to get into (for instance: call out the number 3, and they have to get in groups of 3, call out 8 and they have to get in a group of 8 people...etc.)

-After they've done that for a while, then get them to use body parts with the numbers. (for instance: get into a group where you can connect 3 elbows; get into a group where you connect 8 knees..etc)

-If you know how many people you want in a group, you could have them do "Huggies" until you get to that number and then ask them to do something else like: "tell the person next to you the 1st nickname you've ever had. Or, "in 3 sentences, sum up the last 3 years of your life to the person next to you"

See! They are focused on a ridiculous task that gets them into groups AND they get to know other each other in ways they would not otherwise. Then, they can sit at tables and talk, eat, whatever.

I've done this kind of thing with 1st graders to executives in the public/private sector. NEVER FAILS.

Good Luck!

posted by Hydrofiend at 2:35 PM on November 7, 2012

Why can't you go by start date, but not *group* according to start date, rather, the newest hire goes in one group, the next newest hire goes in the next group, etc. Know in advance how many tables you want to have (say, 20). Get a list of start dates, and go from 1-20 repeatedly.

posted by freezer cake at 2:45 PM on November 7, 2012

posted by freezer cake at 2:45 PM on November 7, 2012

One of the ways I break up smaller classes is to ask them to line themselves up by birthdate (not year) starting from January at one end of the room to December at the other end of the room. This will require them to do a bit of talking and self sorting as they figure out where they fit. Once they all find their spot in the (very long!) line, you can break them up evenly by having them count off 1-18 (for 18 tables, change it for however many tables you have) and all the ones go to table 1, all the twos to table 2 and so on.

posted by platinum at 6:55 PM on November 7, 2012

posted by platinum at 6:55 PM on November 7, 2012

I'm a programmer. If these are programmers, they will know hash functions and hash tables and collision resolution algorithms for hash tables. So do a variant on a bucketized cuckoo hash. You don't need to worry about the distribution of last names/birthdays/whatever because buckets will automatically overflow into each other so that all groups eventually end up with the same number of people.

Here's how it works: number the tables, then find some way to generate a table number out of personal information (more on this later). Each person goes to that table. If a table is full when someone approaches, someone currently seated at that table gets kicked out to make room. Whoever got kicked out then generates a new table number and goes to that table. It's theoretically possible to construct an infinite cycle of people displacing each other, but that should be rare enough it'll make for great conversation if it does happen.

Now you just have to figure out how to generate a table number. I suggest something highly subjective and involving input from the entire group, like "everybody names his favorite TV show, we add up the number of evil female leads (definition of "evil" and "female" and "lead" to be decided by consensus), and that sum modulo the number of tables is where you go." The first time someone generates a table number, he is the only person in his group. If he gets kicked out and has to generate a new table number, his group includes himself and everyone else at his current table and the new guy who's going to replace him. (This reduces the chances of an infinite cycle.)

Now set the capacity of each table such that the total number of programmers exactly fills all tables to capacity, and you're all set!

posted by d. z. wang at 7:58 PM on November 7, 2012

Here's how it works: number the tables, then find some way to generate a table number out of personal information (more on this later). Each person goes to that table. If a table is full when someone approaches, someone currently seated at that table gets kicked out to make room. Whoever got kicked out then generates a new table number and goes to that table. It's theoretically possible to construct an infinite cycle of people displacing each other, but that should be rare enough it'll make for great conversation if it does happen.

Now you just have to figure out how to generate a table number. I suggest something highly subjective and involving input from the entire group, like "everybody names his favorite TV show, we add up the number of evil female leads (definition of "evil" and "female" and "lead" to be decided by consensus), and that sum modulo the number of tables is where you go." The first time someone generates a table number, he is the only person in his group. If he gets kicked out and has to generate a new table number, his group includes himself and everyone else at his current table and the new guy who's going to replace him. (This reduces the chances of an infinite cycle.)

Now set the capacity of each table such that the total number of programmers exactly fills all tables to capacity, and you're all set!

posted by d. z. wang at 7:58 PM on November 7, 2012

This thread is closed to new comments.

posted by Perplexity at 10:53 AM on November 7, 2012