c# - repetir - srand(time(null)) para que sirve




¿Cómo se genera un número aleatorio en C#? (4)

Me gustaría generar un número aleatorio de punto flotante entre 2 valores. ¿Cuál es la mejor manera de hacer esto en C #?


¿Qué tan aleatorio? Si puede tratar con pseudoaleatorio, simplemente:

Random randNum = new Random();
randNum. NextDouble(Min, Max);

Si quieres un número aleatorio "mejor", entonces probablemente deberías mirar el algoritmo Mersenne Twister. Mucha gente ya lo ha implementado para ti


Aquí hay un fragmento de cómo obtener números aleatorios criográficamente seguros: Esto completará los 8 bytes con una secuencia criptográficamente fuerte de valores aleatorios.

byte[] salt = new byte[8];
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
rng.GetBytes(salt);

Para obtener más información, consulta ¿Cuál es tu Random aleatorio? " (Inspirado en un artículo de CodingHorror sobre barajar barajas)


Para una explicación de por qué Longhorn se ha reducido tanto: http://msdn.microsoft.com/en-us/magazine/cc163367.aspx Busque la implementación de NextDouble y la explicación de qué es un doble aleatorio.

Ese enlace también es un buen ejemplo de cómo usar números aleatorios criptográficos (como se menciona Sameer) solo con resultados útiles reales en lugar de un flujo de bits.


// generate a random number starting with 5 and less than 15
Random r = new Random();
int num = r.Next(5, 15);  

Para dobles, puedes reemplazar Next por NextDouble





random