¿Cómo puedo generar un entero aleatorio en C#?

InformationsquelleAutor Rella | 2010-04-24

29 Comentarios

  1. 2282

    La al Azar clase se utiliza para crear números aleatorios. (Pseudo-random que es de curso.).

    Ejemplo:

    Random rnd = new Random();
    int month  = rnd.Next(1, 13);  //creates a number between 1 and 12
    int dice   = rnd.Next(1, 7);   //creates a number between 1 and 6
    int card   = rnd.Next(52);     //creates a number between 0 and 51

    Si usted va a crear más de un número al azar, usted debe mantener el Random instancia y reutilizarlo. Si usted crear nuevas instancias demasiado cerca en el tiempo, van a producir la misma serie de números aleatorios como el generador de números aleatorios es cabeza de serie del reloj del sistema.

    • Los comentarios no son para la discusión extendida; esta conversación ha sido se trasladó a chat.
    • Sólo una nota para la Unidad C# a los usuarios, se debe especificar «del Sistema.Aleatorio()» como la Unidad tiene un «UnityEngine.Aleatorio()» que los enfrentamientos (tenga en cuenta que «UnityEngine.Aleatorio()» no tiene la capacidad para generar números aleatorios). Como la unidad no siempre régimen de importación por defecto, esto puede causar un poco de confusión.
    • Con el fin de usarla, usted puede declarar rnd como static y/o establecer sólo una vez al inicializar el código.
    • Sí, usted puede hacer es estático a usarla, pero usted tiene que tener cuidado para que no se accede a él desde varios subprocesos como no es seguro para subprocesos (como es de costumbre para cualquier clase que no es específicamente thread safe).
    • Y uno más para el comentario acerca de mantener el mismo ‘al Azar’ instancia. Que me ha molestado por algún tiempo.
    • Creo que sería útil para agregar un descargo de responsabilidad que esto no es criptográficamente seguro, ya que esta es una pregunta popular, en caso de que alguien ciegamente intenta hacer la criptografía con Random
    • Esto arroja una advertencia cuando se utiliza SonarQube: «el Uso de generadores de números pseudoaleatorios (PRNGs) es sensibles a la seguridad».

  2. 219

    La pregunta es muy simple, pero la respuesta es un poco complicada. Si usted ve casi todo el mundo ha sugerido utilizar la clase al Azar, y algunos han sugerido utilizar el generador de números aleatorios crypto clase. Pero luego, cuando de elegir qué.

    Para que primero tenemos que entender el término ALEATORIEDAD y la filosofía detrás de él.

    Los invito a ver este video que va en profundidad en la filosofía de la ALEATORIEDAD, el uso de C# https://www.youtube.com/watch?v=tCYxc-2-3fY

    Primero vamos a entender la filosofía de la ALEATORIEDAD. Cuando le decimos a una persona a elegir entre ROJO, VERDE y AMARILLO, lo que sucede internamente. Lo que hace que una persona elija el ROJO o el AMARILLO o el VERDE?

    ¿Cómo puedo generar un aleatorio int numero?

    Algunas de pensamiento inicial entra en la mente de las personas que decide su elección, puede ser el favorito de color , color de la suerte, y así sucesivamente. En otras palabras, algunos de disparo inicial de lo que llamamos en el AZAR como la SEMILLA.Esta SEMILLA es el punto de partida, el gatillo que le instiga para seleccionar el valor ALEATORIO.

    Ahora si una SEMILLA es fácil de adivinar, a continuación, ese tipo de números aleatorios se denomina como PSEUDO y cuando una semilla es difícil adivinar los números aleatorios se denomina ASEGURADO números aleatorios.

    Por ejemplo, una persona que elige el color dependiendo del clima y la combinación de sonido, a continuación, sería difícil adivinar la inicial de la semilla.

    ¿Cómo puedo generar un aleatorio int numero?

    Ahora, permítanme hacer una declaración importante:-

    *»Al azar» de la clase genera sólo de números PSEUDOALEATORIOS y generar SEGURA de números aleatorios necesitamos usar «RNGCryptoServiceProvider» de la clase.

    ¿Cómo puedo generar un aleatorio int numero?

    De clase al azar toma los valores de las semillas de su reloj de CPU que es muy predecible. Así que en otras palabras al AZAR de la clase de C# genera números pseudo-aleatorios , a continuación se muestra el código para el mismo.

    var random = new Random();
    int randomnumber = random.Next()

    Mientras que el RNGCryptoServiceProvider clase utiliza OS entropía para generar semillas. OS la entropía es un valor aleatorio que se genera el uso del sonido , clic con el ratón y el teclado tiempos , térmica temp etc. A continuación va el código para el mismo.

    using (RNGCryptoServiceProvider rg = new RNGCryptoServiceProvider()) 
    { 
        byte[] rno = new byte[5];    
        rg.GetBytes(rno);    
        int randomvalue = BitConverter.ToInt32(rno, 0); 
    }

    A entender OS entropía ver este vídeo de 14:30 https://www.youtube.com/watch?v=tCYxc-2-3fY donde la lógica de la OS de la entropía se explica. Por lo que poner en palabras simples, el RNG Crypto genera SEGURO de números aleatorios.

    • no debería ser su byte[5] sólo [4] como ToInt32 analiza sólo 4 bytes?
    • Siempre es útil saber dónde estas clases en vivo. Sistema.De seguridad.La criptografía
  3. 213

    Cada vez que haces new Random() se inicializa . Esto significa que en un bucle estrecho de obtener el mismo valor un montón de veces. Usted debe mantener un Aleatorio simple ejemplo y seguir usando el Siguiente en la misma instancia.

    //Function to get random number
    private static readonly Random getrandom = new Random();
    
    public static int GetRandomNumber(int min, int max)
    {
        lock(getrandom) //synchronize
        {
            return getrandom.Next(min, max);
        }
    }
    • No es esto lo que @Guffa dijo en su respuesta de 6 meses? «Si usted crear nuevas instancias demasiado cerca en el tiempo, van a producir la misma serie de números aleatorios»
    • Eso es justo lo que usted dijo. En esta me han facilitado la implementación de la eso. Creo que es una buena manera de hacerlo. Funciona mejor.
    • Se trata de una aplicación que sincroniza el código para el uso de seval hilos. Que es bueno para una de múltiples subprocesos de la aplicación, pero una pérdida de tiempo para un solo subproceso de la aplicación.
    • si utiliza el código se puede obtener un bloqueo convoy…
    • Sólo una nota – usted no tiene que crear una syncLock objeto a fijar. Su getrandom objeto ya está estática y readonly, no debería haber problemas con el bloqueo en que para la sincronización.
    • En primer lugar, he probado con el enfoque de Guffa. Entonces traté de guardar la misma Random objeto. En ambos casos tengo el mismo número al azar. Con el enfoque de Pankaj que no sucedió. Tal vez esto es al azar, pero dudo de que ahora. Estoy consultando el número aleatorio en el mismo segundo de diferentes hilos.
    • Estoy de acuerdo en que Pankaj método es el correcto para usar. Lo que estoy diciendo es que se puede simplificar a: //Función para obtener números aleatorios private static readonly Azar getrandom = new Random(); public static int GetRandomNumber(int min, int max) { lock(getrandom ) { // sincronizar volver getrandom.Siguiente(min, max); } }

  4. 85

    Ten en cuenta que new Random() es sembradas en la marca de tiempo actual.

    Si quieres generar sólo un número puede utilizar:

    new Random().Next( int.MinValue, int.MaxValue )

    Para obtener más información, busque en la Al azar clase, aunque por favor nota:

    Sin embargo, debido a que el reloj ha finito resolución, utilizando el constructor sin parámetros para crear diferentes objetos al Azar en estrecha sucesión crea generadores de números aleatorios que producen idénticas secuencias de números aleatorios

    Así que no utilice este código para generar una serie de números aleatorios.

    • -1: El valor predeterminado de la semilla está basado en el tiempo; hacer esto en un bucle y obtendrá muy no-aleatorio de resultados. Usted debe crear una generador y utilizar para todos sus números, no en un generador de cada momento.
    • Hey, eso es injusto. La cuestión era cómo generar al azar int numero. No hay bucles o de la serie se han mencionado.
    • Ok, justo punto. Anulada. Aunque, creo que si no se utilizan new Random() en un bucle es un punto importante.
  5. 27

    Quería añadir un criptográficamente segura versión:

    RNGCryptoServiceProvider Clase (MSDN o dotnetperls)

    Se implementa IDisposable.

    using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
    {
       byte[] randomNumber = new byte[4];//4 for int32
       rng.GetBytes(randomNumber);
       int value = BitConverter.ToInt32(randomNumber, 0);
    }
  6. 16

    Usted podría utilizar Jon Skeet del StaticRandom método dentro de la MiscUtil biblioteca de clases que él construyó para un pseudo-aleatorio.

    using MiscUtil;
    ...
    
    for (int i = 0; i < 100; 
        Console.WriteLine(StaticRandom.Next());
    • «verdaderamente aleatorios»? ¿Cómo funciona eso?
    • Acabo de mirar el código fuente, y esta función se utiliza exactamente el mismo número aleatorio motor, el «incluidos» en C#, pero se asegura de que el mismo «semilla»/»madre de objeto» se utiliza para todas las llamadas. (Siento que no sé C# terminología. Pero mi punto es que esta función no hace mejores números aleatorios de la función estándar.)
    • Es imposible que algo sea ‘azar’, ya que siempre hay algún factor de limitación o perjuicio incluido que es inherente a su propia existencia. No puedes escuchar a la maestra en las clases de ciencias? 😉
    • Digamos que , según él, este es el ‘azar’ como se pone
  7. 14

    es mejor para inicializar el objeto Random con la actual milisegundos, para garantizar cierto número al azar, y usted casi no encontrar duplicados utilizando muchas veces

    Random rand = new Random(DateTime.Now.Millisecond);

    Actualización

    Sé que new Random() utiliza la corriente de las garrapatas de semillas, pero la siembra con la actual milisegundos es todavía lo suficientemente bueno como es buen arranque aleatorio

    El último punto es que usted no tiene que inicializar new Random() cada vez que se necesite un número aleatorio, iniciar un objeto Random, a continuación, utilizar tantas veces como sea necesario dentro de un bucle o lo que sea

    • new Random() utiliza la corriente de las garrapatas de semillas. Al crear varias instancias dentro de la misma milésima de segundo (como contraposición a la garrapata), entonces usted va a obtener el mismo valor devuelto.
    • Este es activamente en las malas. DateTime.Ahora.Milisegundo (a diferencia de DateTime.Ahora.Las garrapatas) es un número entre 0 y 999. Si usted está creando un nuevo uno de estos para cada número aleatorio, usted sólo tiene 1000 posibilidades.
  8. 13

    He probado todas estas soluciones excluyendo el COBOL respuesta… lol

    Ninguna de estas soluciones eran lo suficientemente buenos. Necesitaba aleatorios de una forma rápida para int loop y yo estaba recibiendo toneladas de valores duplicados en distintos rangos. Después de la liquidación por tipo de resultados aleatorios demasiado tiempo decidí finalmente hacer frente a este problema de una vez por todas.

    Es todo acerca de la semilla.

    Puedo crear un número entero aleatorio comprendido por el análisis de la no-dígitos de Guid, entonces puedo usar para crear instancias de mi clase al Azar.

    public int GenerateRandom(int min, int max)
    {
        var seed = Convert.ToInt32(Regex.Match(Guid.NewGuid().ToString(), @"\d+").Value);
        return new Random(seed).Next(min, max);
    }

    Actualización: Siembra no es necesario si se crea la instancia de la clase al Azar una vez. Así que sería mejor crear una clase estática y llamar a un método de ese objeto.

    public static class IntUtil
    {
       private static Random random;
    
       private static void Init()
       {
          if (random == null) random = new Random();
       }
    
       public static int Random(int min, int max)
       {
          Init();
          return random.Next(min, max);
       }
    }

    A continuación, puede utilizar la clase estática como así..

    for(var i = 0; i < 1000; i++)
    {
       int randomNumber = IntUtil.Random(1,100);
       Console.WriteLine(randomNumber); 
    }

    Admito que me gusta este enfoque mejor.

    • Guid no es al azar, no es una buena semilla. Un GUID no ofrece garantías acerca de la aleatoriedad, hace que garantizan la unicidad. stackoverflow.com/questions/2621563/…
    • Guid es una buena semilla. Sólo estoy usando los números en el Guid. Pruebe el método por sí mismo. Poner en un largo bucle for y ver los resultados por ti mismo.
    • Hmm, en el segundo pensamiento.. la semilla no es necesario en absoluto. La actualización de respuesta
    • Gran punto en la actualización. Ni siquiera pensé en hacer un campo estático, de esta manera funciona mucho mejor y es más limpio.
    • Hay algunos problemas con esta respuesta. Primero de todo, GUID, no es una gran fuente de semillas – sólo porque se ve al azar no significa que lo sea. Que los ser lo suficientemente bueno para sus necesidades personales. En segundo lugar, la clase al Azar no es seguro para subprocesos. Usted necesita crear una instancia de una vez por hilo.
    • Bien, como por su comentario, lo puso en un bucle de tiempo y ver por ti mismo… Y no, 1000 veces no es un «bucle de tiempo’ 🙂

  9. 9

    Los números generados por la incorporada Random de la clase (del Sistema.Al azar) genera números pseudo-aleatorios.

    Si quieres verdaderos números aleatorios, el más cercano que podemos llegar es «seguro Pseudo Random Generator», que puede ser generado mediante el cifrado de las clases en C# como RNGCryptoServiceProvider.

    Aun así, si usted todavía necesita verdadero números aleatorios será necesario utilizar una fuente externa, tal como dispositivos de contabilidad para la desintegración radiactiva, como una semilla para un generador de números aleatorios. Puesto que, por definición, cualquier número generado por puramente algorítmico significa que no puede ser verdaderamente aleatorios.

  10. 8

    Yo uso el siguiente código para tener un número aleatorio:

    var random = new Random((int)DateTime.Now.Ticks);
    var randomValue = random.Next(startValue, endValue + 1);
  11. 8

    Modificación de respuesta a partir de aquí.

    Si usted tiene acceso a un Intel Secure Key CPU compatible, usted puede generar verdaderos números aleatorios y cadenas el uso de estas bibliotecas: https://github.com/JebteK/RdRand y https://www.rdrand.com/

    Sólo tienes que descargar la versión más reciente de aquí, incluyen Jebtek.RdRand y agregue una instrucción para ello. Entonces, todo lo que necesitas hacer es esto:

    //Check to see if this is a compatible CPU
    bool isAvailable = RdRandom.GeneratorAvailable();
    
    //Generate 10 random characters
    string key       = RdRandom.GenerateKey(10);
    
     //Generate 64 random characters, useful for API keys 
    string apiKey    = RdRandom.GenerateAPIKey();
    
    //Generate an array of 10 random bytes
    byte[] b         = RdRandom.GenerateBytes(10);
    
    //Generate a random unsigned int
    uint i           = RdRandom.GenerateUnsignedInt();

    Si usted no tiene una CPU compatible para ejecutar el código, sólo tiene que utilizar los servicios RESTful en rdrand.com. Con el RdRandom contenedor de la biblioteca incluía en su proyecto, usted sólo necesita hacer esto (que recibe 1000 llamadas gratis cuando te registras):

    string ret = Randomizer.GenerateKey(<length>, "<key>");
    uint ret   = Randomizer.GenerateUInt("<key>");
    byte[] ret = Randomizer.GenerateBytes(<length>, "<key>");
    • Este es el más informativo de respuesta de la OMI.
  12. 5

    Esta es la clase que yo uso. Funciona como RandomNumber.GenerateRandom(1, 666)

    internal static class RandomNumber
    {
        private static Random r = new Random();
        private static object l = new object();
        private static Random globalRandom = new Random();
        [ThreadStatic]
        private static Random localRandom;
        public static int GenerateNewRandom(int min, int max)
        {
            return new Random().Next(min, max);
        }
        public static int GenerateLockedRandom(int min, int max)
        {
            int result;
            lock (RandomNumber.l)
            {
                result = RandomNumber.r.Next(min, max);
            }
            return result;
        }
        public static int GenerateRandom(int min, int max)
        {
            Random random = RandomNumber.localRandom;
            if (random == null)
            {
                int seed;
                lock (RandomNumber.globalRandom)
                {
                    seed = RandomNumber.globalRandom.Next();
                }
                random = (RandomNumber.localRandom = new Random(seed));
            }
            return random.Next(min, max);
        }
    }
    • Su GenerateRandom clase nunca devolver el número 666, sólo 665. Esto es común malentendido (característica) de forma Aleatoria.Max siguiente valor.
  13. 4
    Random random = new Random ();
    int randomNumber = random.Next (lowerBound,upperBound);
    • Mientras que este código puede responder a la pregunta, es mejor explicar cómo resolver el problema y proporcionar el código de ejemplo o referencia. Código sólo respuestas puede ser confuso y la falta de contexto.
  14. 3

    Mientras que esto está bien:

    Random random = new Random();
    int randomNumber = random.Next()

    Te gustaría controlar el límite (min y max mumbers) la mayoría del tiempo. Por lo que necesita para especificar donde el número aleatorio se inicia y termina.

    La Next() método acepta dos parámetros min y max.

    Así que si quiero que mi número aleatorio entre 5 y 15 años, yo acababa de hacer

    int randomNumber = random.Next(5, 16)
  15. 3

    Fuertes semilla aleatoria yo siempre uso CryptoRNG y no de Tiempo.

    using System;
    using System.Security.Cryptography;
    
    public class Program
    {
        public static void Main()
        {
            var random = new Random(GetSeed());
            Console.WriteLine(random.Next());
        }
    
        public static int GetSeed() 
        {
            using (var rng = new RNGCryptoServiceProvider())
            {
                var intBytes = new byte[4];
                rng.GetBytes(intBytes);
                return BitConverter.ToInt32(intBytes, 0);
            }
        }
    }
  16. 2

    Números calculados por un ordenador a través de un proceso determinista, no puede, por definición, ser al azar.

    Si quieres una verdadera números al azar, la aleatoriedad viene de ruidos atmosféricos o de la desintegración radiactiva.

    Puede probar, por ejemplo RANDOM.ORG (reduce el rendimiento)

  17. 2

    Yo quería demostrar lo que ocurre cuando un nuevo generador de números aleatorios se utiliza en todo momento. Supongamos que se tienen dos métodos o dos clases de cada uno de ellos requiere un número aleatorio. Y, ingenuamente, que el código les gusta:

    public class A
    {
        public A()
        {
            var rnd=new Random();
            ID=rnd.Next();
        }
        public int ID { get; private set; }
    }
    public class B
    {
        public B()
        {
            var rnd=new Random();
            ID=rnd.Next();
        }
        public int ID { get; private set; }
    }

    Hacer que usted piensa que va a conseguir dos diferentes IDs? NOPE

    class Program
    {
        static void Main(string[] args)
        {
            A a=new A();
            B b=new B();
    
            int ida=a.ID, idb=b.ID;
            //ida = 1452879101
            //idb = 1452879101
        }
    }

    La solución es siempre el uso de una sola estática generador de números aleatorios. Como este:

    public static class Utils
    {
        public static readonly Random random=new Random();
    }
    
    public class A
    {
        public A()
        {
            ID=Utils.random.Next();
        }
        public int ID { get; private set; }
    }
    public class B
    {
        public B()
        {
            ID=Utils.random.Next();
        }
        public int ID { get; private set; }
    }
    • o para inicializar el generador..
    • ¿Cómo se puede elegir con seguridad una semilla?
    • Bueno, en primer lugar, si los objetos se crean incluso 10 ms aparte, los números aleatorios que se generan son diferentes con el valor de la semilla. En segundo lugar, usted puede triturar cualquier cosa al azar ambientales o de proceso de datos que tiene a su alrededor para obtener una semilla. Luego está la disyuntiva de si desea una larga secuencia de números que es más probable que empiece a repetirse a sí misma, o varios flujos incluso si dos corrientes terminan siendo idénticos. Y si usted está preocupado acerca de la seguridad, RNGCryptoServiceProvider es una llamada mejor de todos modos.
    • Sería genial tener una máquina con el chip de una pequeña partícula alfa fuente radiactiva y un detector (cómo detector de humo funciona) en orden a la selección aleatoria de números basados en la desintegración radiactiva (que es muy aleatorio).
  18. 2
    Random rand = new Random();
    int name = rand.Next()

    Poner todo lo que los valores que desee en el segundo paréntesis
    asegúrese de que ha establecido un nombre por escrito la proposición y de doble pestaña para generar el código

    • La proposición y el doble de la ficha?
    • valor añadido en comparación con los ya existentes respuestas?
    • Por qué prop y doble pestaña? Estás diciendo sin que atajo de teclado, que es resumen de la propiedad, su código no funcionará?
  19. 0

    Voy a suponer que usted desea un distribuidos de manera uniforme generador de números aleatorios, como el de abajo. Número aleatorio en la mayoría de lenguaje de programación, incluyendo C# y C++ no está correctamente barajan antes de usarlos. Esto significa que usted conseguirá el mismo número una y otra vez, que en realidad no es al azar. Para evitar a sacar el mismo número una y otra vez, usted necesita una semilla. Normalmente, las garrapatas en el tiempo está bien para esta tarea. Recuerde que usted va a obtener el mismo número una y otra si está utilizando la misma semilla en cada momento. Así que trate de usar diferentes de semillas de siempre. El tiempo es una buena fuente de semillas, ya que chage siempre.

    int GetRandomNumber(int min, int max)
    {
        Random rand = new Random((int)DateTime.Now.Ticks);
        return rand.Next(min, max);
    }

    si usted está buscando para el generador de números aleatorios de una distribución normal, se puede usar una Box-Muller transformación. Comprobar la respuesta por yoyoyoyosef en Aleatorio Gaussiano Variable de que se trate. Puesto que usted desea entero, se tiene que echar el doble de valor a entero al final.

    Random rand = new Random(); //reuse this if you are generating many
    double u1 = 1.0-rand.NextDouble(); //uniform(0,1] random doubles
    double u2 = 1.0-rand.NextDouble();
    double randStdNormal = Math.Sqrt(-2.0 * Math.Log(u1)) *
             Math.Sin(2.0 * Math.PI * u2); //random normal(0,1)
    double randNormal =
             mean + stdDev * randStdNormal; //random normal(mean,stdDev^2)

    Aleatorio Gaussiano Variables

  20. 0

    Lo siento, OP requiere de una al azar int valor, pero con la simple finalidad de compartir los conocimientos si quieres un azar BigInteger valor se puede utilizar la siguiente instrucción:

    BigInteger randomVal = BigInteger.Abs(BigInteger.Parse(Guid.NewGuid().ToString().Replace("-",""), NumberStyles.AllowHexSpecifier));
  21. 0

    Puedes probar con valor de raíz aleatoria, utilizando a continuación:

    var rnd = new Random(11111111); //note: seed value is 11111111
    
    string randomDigits = rnd.Next();
    
    var requestNumber = $"SD-{randomDigits}";
    • Gracias @MikaelDúiBolinder para ver este snipet
  22. -1

    ¿Por qué no utilizar int randomNumber = Random.Range(start_range, end_range) ?

    • En realidad int randomNumber = Aleatorio.Rango(start_range, end_range + 1)
    • No Al Azar.Range() existen? No lo pude encontrar en la documentación de MSDN.
    • No podía encontrar al Azar.Range() en la documentación de MSDN demasiado
  23. -1

    Pruebe estos sencillos pasos para crear números aleatorios:

    Crear la función:

    private int randomnumber(int min, int max)
    {
        Random rnum = new Random();
        return rnum.Next(min, max);
    }

    El uso de la función anterior en una ubicación donde desea utilizar números aleatorios. Supongamos que usted quiere usar en un cuadro de texto.

    textBox1.Text = randomnumber(0, 999).ToString();

    0 min y 999 es de máx. Puede cambiar los valores a lo que usted desea.

    • Esto devolverá el mismo número cuando se le llama varias veces estrechamente juntos, ya que utiliza el Sistema de tiempo como una semilla…
    • randomnumber(0, 999) nunca volverán a 999. El Valor máximo no es inclusivo. Esto es común malentendido (característica) de forma Aleatoria.Max siguiente valor.
  24. -2

    De manera rápida y fácil en línea, uso de fuelle código:

    new Random().Next(min, max);
    
    //for example unique name
    strName += "_" + new Random().Next(100, 999);
  25. -2

    Utilizar una instancia de Azar en varias ocasiones

    //Somewhat better code...
    Random rng = new Random();
    for (int i = 0; i < 100; i++)
    {
        Console.WriteLine(GenerateDigit(rng));
    }
    ...
    static int GenerateDigit(Random rng)
    {
        //Assume there'd be more logic here really
        return rng.Next(10);
    }

    Este artículo se echa un vistazo a por qué el azar provoca muchos problemas, y cómo enfrentarse a ellos.
    http://csharpindepth.com/Articles/Chapter12/Random.aspx

    • Random no es un hilo fuerte de la clase. Si crea una única instancia, se debe restringir el acceso a ella detrás de un mecanismo de bloqueo.
  26. -2

    Siempre me han métodos que generan números aleatorios que ayuda para diversos fines. Espero que esto pueda ayudar a usted también:

    public class RandomGenerator  
    {  
        public int RandomNumber(int min, int max)  
        {  
            var random = new Random();  
            return random.Next(min, max);  
        }  
    
        public string RandomString(int size, bool lowerCase)  
        {  
            var builder = new StringBuilder();  
            var random  = new Random();  
            char ch;  
    
            for (int i = 0; i < size; i++)  
            {  
                ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));  
                builder.Append(ch);  
            }  
    
            if (lowerCase)  
                return builder.ToString().ToLower();  
            return builder.ToString();  
        }  
    }
  27. -4
     int n = new Random().Next();

    También se puede dar valor mínimo y máximo para Next() función. Como:

     int n = new Random().Next(5, 10);

Dejar respuesta

Please enter your comment!
Please enter your name here