title: Getting a random transversal for finite family of finite sets
body: <p>I'm looking for an algorithm that takes a finite number of sets S_1, ..., S_n as an input and outputs a list x_1, ..., x_n where x_i belongs to S_i for i=1,..,n and all x_i are pairwise distinct. Note, that sets S_i will not be pairwise disjoint in general. We can call such list a transversal of family {S_1, ..., S_n}, as it is usually done.</p>
  
  <p>The list should be randomly chosen in such way that each possible list is equally probable as an output. I don't care what happens, where no such list exists. I want the algorithm to be reasonably fast, in particular enumerating all lists before making the choice is considered too slow.</p>