Domina la generación de números aleatorios en C | Rangos y ejemplos prácticos explicados

1. Introducción

El lenguaje C es un lenguaje de programación ampliamente utilizado en la programación de sistemas de bajo nivel y en el desarrollo de juegos. En particular, la «generación de números aleatorios» se utiliza en muchas situaciones. Por ejemplo, la creación de elementos aleatorios en juegos, simulaciones, cifrado, generación de datos de prueba, etc., tiene una amplia gama de aplicaciones. En este artículo, explicamos el método para generar números aleatorios en un rango especificado en el lenguaje C, junto con ejemplos concretos. Está estructurado para que los lectores comprendan el mecanismo de generación de números aleatorios y puedan aplicarlo en programas reales.

2. Fundamentos de la generación de números aleatorios en C

En el lenguaje C, para generar números aleatorios se utiliza la biblioteca estándar . La función rand() genera números aleatorios enteros en el rango de 0 a RAND_MAX (aproximadamente 2147483647), pero si se usa el mismo valor de semilla, se genera la misma secuencia de números aleatorios cada vez.

Generación de números pseudoaleatorios y configuración del valor de semilla

Un concepto importante en la generación de números aleatorios es el «valor de semilla». El valor de semilla determina el punto de inicio de la secuencia de números aleatorios; si no se configura, se generará la misma secuencia cada vez. Para evitar esto, se configura la semilla con la función srand() . Comúnmente, se usa la función time() para establecer la hora actual como semilla.
#include 
#include 
#include 

int main() {
    srand((unsigned int)time(NULL));
    printf("%dn", rand());
    return 0;
}
De esta manera, cada vez que se ejecuta el programa, se genera un número aleatorio diferente.
侍エンジニア塾

3. Método para generar números aleatorios especificando un rango

Si desea obtener valores dentro de un rango específico en la generación de números aleatorios, es necesario realizar operaciones matemáticas en el resultado de la función rand(). La fórmula básica para la generación de números aleatorios con rango especificado es la siguiente:
rand() % (max - min + 1) + min
Al usar esto, se generan números aleatorios en el rango de enteros desde min hasta max.

Código de muestra: Generación de números aleatorios con rango especificado

#include 
#include 
#include 

int main() {
    int min = 1;
    int max = 100;
    srand((unsigned int)time(NULL));
    int random_number = rand() % (max - min + 1) + min;
    printf("Random number between %d and %d: %dn", min, max, random_number);
    return 0;
}
Este código genera un número aleatorio en el rango de 1 a 100 y lo imprime.

4. Generación de números aleatorios en un rango de números reales

En la generación de números aleatorios reales, se utiliza la función rand() y RAND_MAX para escalar. En el caso de generar números aleatorios en el rango de 0.0 a 1.0, se utiliza el siguiente código.

Ejemplo de generación de números aleatorios en un rango de números reales:

#include 
#include 
#include 

int main() {
    srand((unsigned int)time(NULL));
    double random_number = (double)rand() / RAND_MAX;
    printf("Número aleatorio entre 0.0 y 1.0: %f\n", random_number);
    return 0;
}
Este programa genera números aleatorios en el rango de 0 a 1. Aplicando esta técnica, es posible generar números aleatorios en cualquier rango de números reales. Por ejemplo, si se desea obtener un número aleatorio en el rango de 0.0 a 5.0, se puede multiplicar el valor generado por 5.

5. Ejemplos de aplicación de números aleatorios

Simulación de dados

En el desarrollo de juegos y similares, al utilizar números aleatorios, la simulación de dados es un ejemplo común. A continuación, se muestra el código que genera un número aleatorio en el rango de 1 a 6 para simular el resultado de un dado.
#include 
#include 
#include 

int main() {
    srand((unsigned int)time(NULL));
    int dice_roll = rand() % 6 + 1;
    printf("Dice roll: %dn", dice_roll);
    return 0;
}

Aproximación del número π por el método de Monte Carlo

El método de Monte Carlo es una técnica que utiliza números aleatorios para aproximar problemas que son difíciles de resolver analíticamente. El siguiente código es un ejemplo que aproxima el número π utilizando números aleatorios.
#include 
#include 
#include 

int main() {
    int n_trials = 1000000;
    int n_inside = 0;
    double x, y, pi;

    srand((unsigned int)time(NULL));

    for (int i = 0; i < n_trials; i++) {
        x = (double)rand() / RAND_MAX;
        y = (double)rand() / RAND_MAX;
        if (x * x + y * y <= 1) {
            n_inside++;
        }
    }

    pi = 4.0 * n_inside / n_trials;
    printf("Approximated π: %fn", pi);

    return 0;
}
Es un método que utiliza el método de Monte Carlo para generar números aleatorios y calcular el número π basado en esos resultados. Esta técnica se utiliza comúnmente en simulaciones físicas y similares.

6. Resumen

En este artículo, introdujimos métodos para generar números aleatorios con rangos especificados en el lenguaje C. rand() y srand() desde su uso básico, hasta los métodos para especificar rangos de manera efectiva, y además cubriendo la generación de números aleatorios reales y ejemplos de aplicación. La generación de números aleatorios es una técnica utilizada en muchos escenarios, como el desarrollo de juegos y simulaciones. En proyectos futuros, por favor, intente utilizar el contenido de este artículo.