A fairer queue system

I’ve been asked if there is a way the queues could be made to share evenly between all agents.
For example, currently, if there are three agents in a queue and two calls come in the top two agents will get the calls (on a cyclic queue), if one of those agents has finished a call and a third call comes in it will be sent to the first agent again. If this continues agent 3 doesn’t get a fair distribution of the calls, whereas agent one will get a majority.
Is there a way to configure a queue so that each agent can get an even number of calls over the day? I have looked at the different options but I’m having a hard time to grasp which one would be able to do this.