Goal:

I want to generate a r-regular graph with n vertices. rn = 2m.

Current best:

```
(1) take n vertices; randomly pick a vertex v of degree < r.
(2) S = set of all vertices of degree < r, and not a neighbor of v.
(3) create an edge between v and a random element of S.
(4) repeat.
```

Question:

Is there a more parallel way to do this?

Clarification:

Suppose I wanted to randomly pick an element in [1...n]. I could do it sequentially like:

```
take 1 w/ prob 1/n
else take 2 w/ prob 1/n-1
else take 3 w/ prob 1/n-2
...
```

Or I could do it "one shot" by generating a random element between [1...n].

Similarly, I want to generate a r-regular graph "one shot" rather than an single edge at a time.

Goal:

This is to build mental intuition of what it means to "uniformly pick a r-regular graph."

Thanks!