¿Cómo puedo generar número diferente, que está generando el mismo númeroasp.net mvc C# de generación aleatoria mismo número
Random rand = new Random(100000);
rand.Next();
¿Cómo puedo generar número diferente, que está generando el mismo númeroasp.net mvc C# de generación aleatoria mismo número
Random rand = new Random(100000);
rand.Next();
Simplemente elimine el número de semilla en el constructor. Esta semilla es esencialmente un número a partir del cual se genera la lista de números aleatorios. Si especifica un número constante, su lista de números aleatorios siempre será la misma.
Random rand = new Random();
rand.Next();
seguro exactamente lo que está después!
Random rand = new Random(Environment.TickCount);
rand.Next();
+1 mientras que el tickcount no es una gran semilla, es al menos dinámico y para propósitos generales probablemente * lo suficientemente bueno *. –
En el futuro, sería mejor no intentar responder una pregunta cuando, como dices, no estás seguro de qué es exactamente lo que buscan. – DOK
ok gracias, parece que asumí lo mismo que todos los demás :) – WraithNath
especificando la misma semilla intente esto.
Random rand = new Random();
rand.Next();
Esto usará la semilla predeterminada que es la hora.
"Inicializa una nueva instancia de la clase Aleatoria, utilizando un valor de inicialización predeterminado dependiente del tiempo".
Según MSDN: http://msdn.microsoft.com/en-us/library/system.random.aspx
Re su comentario anterior, la forma de generar un número "aleatorio" en un rango establecido.
// Generate and display 5 random integers from 50 to 100.
Console.WriteLine("Five random integers between 50 and 100:");
Console.Write("{0,8:N0}", rand.Next(50, 101));
(Tomado del enlace MSDN anterior) Ahora puede generar el rango que desee.
Existe un problema potencial con el uso de la semilla predeterminada basada en el tiempo. Para una aplicación de varios subprocesos que se ejecuta en un procesador de varios núcleos, es relativamente probable que dos subprocesos diferentes generen exactamente el mismo valor aleatorio (ya que es posible que obtengan la misma hora exacta del sistema y, por lo tanto, produzcan el mismo valor) . Usaría un hash de un Guid.NewGuid() como la semilla en su lugar. – MusiGenesis
Si estaba desarrollando una aplicación así, corrija, sin embargo, el uso de la clase Random() no debería usarse para nada más que hacer que las cosas parezcan aleatorias. – LiamB
La pregunta está etiquetada con "asp.net", que es exactamente el tipo de entorno de subprocesos múltiples que puede producir este tipo de problemas. Dos usuarios que toquen el mismo código al mismo tiempo podrían ver los mismos valores "aleatorios". – LukeH
Random rand = new Random();
rand.Next(0,1000); // minimum = 0, maximum = 999
Vale la pena decir que el mínimo es inclusivo, el máximo es exclusivo. Lo anterior generará un número en el rango (inclusivo) 0-999. –
@lain no sabía que ... buen ojo – WernerCD
Random rand=new Random(DateTime.Now.Millisecond);
rand.Next();
Esto siempre funciona para mí.
¿Por qué no simplemente 'new Random()', ya que usa 'Environment.TickCount' como el valor predeterminado? – LukeH
@LukeH: ¿tiene alguna documentación sobre eso? Todo lo que he visto documentado es que está sembrado con un valor basado en el tiempo, lo que no necesariamente significa que esté usando 'Environment.TickCount'. – MusiGenesis
@MusiGenesis: Creo que se trata de un detalle de implementación en lugar de una garantía específica, pero es bastante fácil de confirmar por sí mismo usando ILDASM o Reflector. O haciendo algo como 'var r1 = new Random(); var r2 = new Random (Environment.TickCount); while (true) Console.WriteLine (r1.Next() == r2.Next()); 'debe mostrar" verdadero "continuamente a menos que sea * realmente * desafortunado y los dos constructores se ejecuten en cualquier lado de un tic. – LukeH
restringirá la cantidad de caracteres generados o puede generar 10000 o 1000000000 – maztt
No creo que haya un límite en la cantidad de números generados. Tampoco está relacionado con un número de caracteres, ya que el método '.Next()' devuelve un entero de 32 bits con signo mayor o igual que cero y menor que MaxValue. –