Mientras buscaba los mejores intentos para generar números realmente aleatorios, tropecé con este ejemplo de código.RNGCryptoServiceProvider - Revisión de número aleatorio
Buscando opiniones en este fragmento.
using System;
using System.Security.Cryptography;
private static int NextInt(int min, int max)
{
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
byte[] buffer = new byte[4];
rng.GetBytes(buffer);
int result = BitConverter.ToInt32(buffer, 0);
return new Random(result).Next(min, max);
}
Fuente: http://www.vcskicks.com/code-snippet/rng-int.php
¿Esto es preferible a usar una semilla recuento de tics tales como:
Random rand = new Random(Environment.TickCount);
rand.Next(min, max);
Nota:
Yo no busco a terceros proveedores de datos aleatorios como Random.org, ya que tal dependencia no es realista para la aplicación licación.
No hay mejores prácticas para 'números aleatorios'. Solo para escenarios concretos que requieren números aleatorios. –