es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué Random genera números diferentes en un loop?

Hola, quiero generar números aleatorios, por lo que creé un método en mi clase:

        private readonly Random _rand = new Random(); // Propiedad privada de la clase
    public void GenerateRandomNumber()
    {
        // El for se ejecuta 10 veces
        for (int i = 1; i < 11; i++)
        {
            Console.WriteLine(_rand.Next(0, 10));
        }
    }

Cuando lo llamo desde Main, creo una nueva instancia de mi clase y luego lo llamo. Funciona correctamente, pero quiero saber por qué genera diferentes números cada vez en el ciclo for y cada vez que ejecuto el programa.

Esto es interesante para mí porque sé que Random puede generar los mismos números, pero en mi caso genera diferentes.

¿Cómo afectará si agrego el modificador de acceso “static” a la propiedad privada?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    La clase Random utiliza un valor de semilla para generar números pseudoaleatorios. Si no especificas un valor de semilla explícitamente, entonces la semilla por defecto será la hora actual del sistema. Esto significa que cada vez que ejecutas el programa, la semilla será diferente y, como resultado, la secuencia de números aleatorios generados por la clase Random también será diferente.

    En tu código, estás creando una nueva instancia de la clase Random cada vez que llamas al método GenerateRandomNumber(). Esto significa que cada instancia de la clase Random tiene su propio valor de semilla y generará una secuencia diferente de números aleatorios.

    Si agregas el modificador static a la propiedad privada _rand, entonces solo existirá una instancia de la clase Random durante toda la vida útil de la aplicación. Esto significa que se utilizará el mismo valor de semilla cada vez que llames al método GenerateRandomNumber(). Como resultado, la secuencia de números aleatorios generados por la clase Random será la misma cada vez que ejecutes el programa.

    Ten en cuenta que si necesitas más aleatoriedad, puedes proporcionar tu propio valor de semilla llamando al constructor Random(int seed) con un valor de semilla que cambie cada vez que se ejecute el programa.

Comments are closed.