Random ran = new Random();
byte tmp = (byte)ran.Next(10);
¿Existe una alternativa a este código? No parece tener un comportamiento completamente aleatorio.Generador de C# aleatorio real
Random ran = new Random();
byte tmp = (byte)ran.Next(10);
¿Existe una alternativa a este código? No parece tener un comportamiento completamente aleatorio.Generador de C# aleatorio real
Eso es porque Random
es solo pseudoaleatorio. Si desea que los números aleatorios criptográficamente seguros es necesario utilizar una clase como System.Security.Cryptography.RNGCryptoServiceProvider
También podría considerar la API random.org
Podría ser más simple que eso. Si puede utilizar este método en un bucle cerrado:
for (int i = 0; i < 1000; i++)
{
Random ran = new Random();
byte tmp;
tmp = (byte)ran.Next(10);
}
Es posible que vea el mismo número una y otra vez. Asegúrese de crear el objeto Aleatorio fuera de cualquier tipo de bucle.
Random ran = new Random();
for (int i = 0; i < 1000; i++)
{
byte tmp;
tmp = (byte)ran.Next(10);
}
Dicho esto, es cierto que el proveedor de cifrado es mejor. Pero solo está obteniendo randoms entre 0 & 9 entonces, ¿qué tan aleatorio tiene que ser?
Estoy simulando una estadística con un 10% de probabilidad, así que genero 0-10 y veo con qué frecuencia se genera 0 – Dominating
@Dominación: Tenga cuidado. En realidad estás generando los números 0-9. 10 nunca se generará ya que es el límite superior exclusivo. – gligoran