¿Qué tan bueno es este método para generar números aleatorios?
Estaba buscando en Google RNGCryptoServiceProvider con ejemplos sobre cómo limitar el rango entre Max y Min, y aún obtener una distribución uniforme. Antes de usar el operador de módulo, pero a veces obtengo valores extraños (por encima de Max) ... De todos modos, este código (crédito a desconocido) genera Random con una nueva semilla de RNGCCryptoServiceProvider, cada vez que se llama al método. ¿Qué piensan ustedes?
public static int GetRandom(int min, int max)
{
byte[] b = new byte[sizeof(int)];
new System.Security.Cryptography.RNGCryptoServiceProvider().GetBytes(b);
int i = BitConverter.ToInt32(b, 0);
Random r = new Random(i);
return r.Next(min, max);
}