usar una semilla repetir propiedad numeros matriz llenar generar decimales con como clase azar aleatorios c# vb.net linq enumerable

una - propiedad random c#



Matriz aleatoria utilizando LINQ y C# (6)

Estaba leyendo un artículo en MSDN Magazine sobre el uso de la clase Enumerable en LINQ para generar una matriz aleatoria. El artículo usa VB.NET y no estoy seguro de cuál es el equivalente en C #:

Dim rnd As New System.Random() Dim numbers = Enumerable.Range(1, 100). _ OrderBy(Function() rnd.Next)



Inicialmente pensé que esto sería una mala idea, ya que el algoritmo de ordenamiento deberá hacer comparaciones múltiples para los números, y obtendrá una clave de clasificación diferente para el mismo número cada vez que llame a la lambda para ese número. Sin embargo, parece que solo lo llama una vez para cada elemento de la lista y almacena ese valor para usarlo más adelante. Este código demuestra esto:

int timesCalled = 0; Random rnd = new Random(); List<int> numbers = Enumerable.Range(1, 100).OrderBy(r => { timesCalled++; return rnd.Next(); } ).ToList(); Assert.AreEqual(timesCalled, 100);


Lo mejor que puedo hacer sin tener acceso a Visual Studio (cruza los dedos):

System.Random rnd = New System.Random(); IEnumerable<int> numbers = Enumerable.Range(1, 100).OrderBy(rnd => rnd.Next);



¿Qué pasa con algo mucho más fácil ...

Enumerable.Range(1, 100).OrderBy(c=> Guid.NewGuid().ToString())


Random rnd = new Random(); IEnumerable<int> numbers = Enumerable.Range(1, 100).OrderBy(r => rnd.Next());