I'm trying to understand the custom sorting logic of the following LINQ query:

```
 var random = new Random();
 var cnt = Enumerable.Range(0, 10).OrderBy(i => random.NextDouble()).ToList();

```

What is the inner logic of such comparision and how does i compares to random.NextDouble() inside making the result list always different?