Given a home with \(n\) unequal rooms and \(n\) roommates with unique preferences, what's the right way to split rent and assign rooms?
Should the room with the attached bathroom cost more, or the one with the balcony?
Should roommate A get the room with the view, or roommate B?
How much should each room cost?
Read below, or skip to the calculator to enter your own numbers.
The Algorithm
Each roommate privately writes down the price they’d be happy to pay for each bedroom, making sure the numbers they choose sum to \(Rent\).
For example, in a 2-bedroom home with \(Rent = 2000\), I might write:
1North bedroom: $1200
2South bedroom: $800
i.e. I strongly prefer the north bedroom, but I'd happily take the south bedroom if it were cheap.
If a coin were flipped to decide which room I get at the price I listed, I'd be happy either way. It is crucial that each roommate decide their numbers like this, because that is functionally what will happen.1
Gather all slips of paper and average the numbers for each room.
| Person | North Bedroom | South Bedroom |
|---|---|---|
| Arnav | $1000 | $1000 |
| Carol | $1300 | $700 |
| Average | $1150 | $850 |
Result
The highest bidder gets the room. They pay the average.
| Person | Bedroom | Willing to Pay | Will Pay |
|---|---|---|---|
| Arnav | South Bedroom | $1000 | $850 |
| Carol | North Bedroom | $1300 | $1150 |
The averages always sum to \(Rent\).
Almost always, each person pays less than what they would have been happy with; everyone feels like they got a deal.
This works for any number of roommates.
Edge Cases
- If rounding down makes you come up short, someone needs to pony up the extra $1 or 1¢.
- If multiple people bid the same amount for a room, or otherwise if "highest bidder gets it" becomes unclear, here's the nuanced algorithm.
- In extreme situations, a person may pay more for a room than their chosen price. I've never seen this happen.
The Calculator
Remember the rules:
- Each roommate should privately write down a price for each room that:
- they would be happy to pay if assigned that room randomly, and
- together sum to \(Rent\).
- Once everyone has written these numbers down, collect them and enter them below to see room assignments and prices.
- Each roommate pays the \(Will\ Pay\) amount for \(Room\). The numbers will sum to \(Rent\).
Why Does This Work?
Each room is a one-of-a-kind product in a marketplace. The marketplace is "rooms available in this home".
Each buyer values each room differently. So we have to answer two questions:
- Who gets which room?
- How much does each room cost?
So we turn to the standard way to discover these things for a one-of-a-kind items.
Auctions
But there are some weird constraints. First, each roommate must buy exactly one room.
We can't hold a standard auction; when any room is bid on, the other rooms' prices would change.2 What we can do is hold \(n\) auctions simultaneously. Numbers are recorded privately and in one turn to make it difficult to manipulate dependent prices.
The second constraint is that the sum of all rooms' prices must total to \(Rent\).
If we were to simply charge the highest bidder their bid amount, the total would almost always exceed \(Rent\). Some common strategies exist to lower the amount the winner pays, such as having them pay the second-highest amount. But we need a guarantee of a specific sum, not just "lower than the sum of the highest bids".
This is why each person's chosen prices must sum to \(Rent\). If you have a 2-dimensional table of numbers where the sum of every row is the same number \(T\), then the sum of the averages of every column is also \(T\).
This is called linearity of addition and is how we can end up with a total of exactly \(Rent\) without throwing a wrench in anyone's expectations of price.
Conclusion
Everyone has different preferences when it comes to room selection. I value sound isolation and light, but you may value an attached bathroom or extra space.
Instead of picking randomly and silently settling to avoid tension, consider using basic economics to do price discovery and hopefully everyone can be a bit happier with how it turns out.
I'd be delighted to hear if this helps you out. Reach me at [email protected]. I'm not around much on social media these days.
- If a person cannot make such a split, then either rent is out of proportion with their expectations or they have budget constraints that limit their options. This algorithm cannot solve for these, but a transparent discussion can.
- This can technically work, but in practice would give a bad social foundation for a roommate relationship Imagine having a roommate that pays $0 because the other roommates got into a bidding war.