title: Shuffle a list (with duplicates) to avoid identical elements being next to each other
body: <p>I am wondering if there is a "best" way to shuffle a list of elements that contains duplicates such that the case where array[i] == array[i+1] is avoided as much as possible.</p>
  
  <p>I am working on a weighted advertising display (I can adjust the number of displays per rotation for any given advertiser) and would like to avoid the same advertister appearing twice in a row.</p>