title: How to replace FirstOrDefault with something like RandomOrDefault to "balance" calls?
body: <p>I have such code</p>
  
  <pre><code>    senders.FirstOrDefault(sender =&gt; !sender.IsBusy);
  </code></pre>
  
  <p>This line is called pretty often.</p>
  
  <p>The problem is that it always returns the first non-busy <code>sender</code>; the same first sender is returned pretty often, but the last one is returned very rarely. How to easily balance this?</p>
  
  <p>Ideally, on every call I should return the most rarely used sender. I.e. between all non-busy senders select the one that was selected the least number of times during the last second.</p>