I want an algorithm that takes the following
Input: $M,N,k,d$ positive integers such that $kM = dN$.
and produces the following
Output: Random bipartite graph, with $M$ vertices all of degree $k$ on one partition, and $N$ vertices all of degree $d$ on the other partition. No loops allowed. The output should be uniformly distributed among all possible graphs.
Does an algorithm like this exist? If so please provide a reference.