Math problem of selecting jobs amongst skilled employees I was wondering if anyone has ever come across a mathematical problem of this nature before:
Suppose that you are a manager working with a large team of $n$ people. These $n$ people have been trained to do $m$ different skills, with each one knowing how to do exactly $k$ of these $m$. Every day when your team come into work, it is your job to allocate these $n$ people exactly one of the $m$ different roles for the day in a fair/random manner. Note that there are $m$ roles, $m$ is less than or equal to $n$ so there could be more than one job of each type (ie. you could have 4 painters on the team).
Is this a problem which has been explored either combinatorically or algorithmically before? I am hoping that there is an area of maths which will help me solve problems similar to this.
Thanks in advance for your help

Make a bipartite graph, with $n$ vertices on the left corresponding to the different workers, and $m$ vertices on the right corresponding to the different roles. From each of the $n$ vertices, there are $k$ edges each going to different role $m$ depending on that worker's skill.
This problem now becomes a variant of a graph-theoretic matching problem. Since it's a bipartite graph, any algorithmic solution to this problem will probably be easily solvable.
