A perfect matching in a bipartite graph is a matching that matches all vertices. The document discusses algorithms for finding a perfect matching in regular bipartite graphs. The currently most efficient algorithm takes time O(m), where m is the number of edges and n is the number of vertices. The document improves this to O(min{m, n2.5ln n/d}) by proving a uniform sampling theorem: sampling each edge independently with probability O(n ln n/d2) results in a graph that has a perfect matching with high probability.