back to top

Generare numeri random in C

La generazione di elementi randomici è una procedura fondamentale nella programmazione. Infatti, ci sono molti scenari in cui è necessario introdurre un elemento di casualità all’interno di un programma, come nei giochi, nelle simulazioni e nei test automatizzati. In questo articolo, esploreremo come generare numeri casuali in C utilizzando la funzione rand(), sfruttando alcune tecniche avanzate e ottimizzando il nostro codice per migliorare l’affidabilità e la variabilità dei numeri generati.

Utilizzo della funzione rand()

La funzione rand() della libreria stdlib.h è la principale responsabile della generazione di numeri casuali in C. Tuttavia, per ottenere risultati più variabili, è importante inizializzare il generatore con la funzione srand(), utilizzando un valore di seme dinamico, come il timestamp corrente. Di seguito è riportato un esempio di codice per generare un numero casuale:

Pubblicità
// Importo la libreria per la gestione di date e orari
#include <time.h>

// Importo la libreria per la generazione di elementi casuali
#include <stdlib.h>

int main() {
    // Inizializzo il generatore di numeri casuali
    srand(time(NULL));

    // Genero il numero casuale
    int r = rand();
    printf("Numero random generato: %d", r);
    return 0;
}

Generare numeri casuali in un intervallo specifico

Se desideriamo generare numeri casuali all’interno di un intervallo specifico, possiamo modificare il risultato di rand() applicando una formula. Ad esempio, per generare un numero casuale compreso tra 1 e 100, possiamo usare il seguente codice:

#include <stdlib.h>
#include <stdio.h>
#include <time.h> 

int main() {
    // Inizializzo il generatore di numeri casuali
    srand(time(NULL));

    // Genero un numero casuale nell'intervallo tra 1 e 100
    int r = rand() % 100 + 1;
    printf("Numero random compreso tra 1 e 100: %d", r);
    return 0;
}

La linea di codice che stabilisce il limite superiore è:

int r = rand() % 100 + 1;

Per modificare tale limite, è sufficiente sostituire 100 con un altro numero desiderato. Ad esempio, se si desidera un numero casuale tra 1 e 50, la linea diventerà:

int r = rand() % 50 + 1;

Ricordate che il rand() di default produce numeri casuali che possono apparire ripetitivi senza una buona inizializzazione, quindi è sempre consigliabile usare srand(time(NULL)) all’inizio del programma.

Considerazioni Finali e Suggerimenti

La generazione di numeri casuali è un argomento importante per molti aspetti della programmazione. Negli esempi sopra, abbiamo visto come generare semplici numeri casuali, ma ci sono molte altre tecniche avanzate disponibili, come l’uso della libreria random() per una qualità migliore nei risultati o l’implementazione di algoritmi di generazione di numeri casuali più complessi.

In oltre, se stai sviluppando applicazioni critiche che richiedono una qualità elevata nella casualità, considera di utilizzare librerie dedicate per la crittografia che offrono metodi per generare numeri casuali più sicuri. Alcuni esempi potrebbero essere openssl rand() o altre librerie che implementano il generatore di numeri casuali di Mersenne Twister.

Altri contenuti interessanti

Pubblicità
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).

Leggi anche...

Vibe Coding: cos’è, come funziona e quali sono i migliori strumenti AI per programmare

Immagina di poter scrivere software senza dover digitare una...

I migliori libri per imparare a programmare in Python

Imparare a programmare in Python è un passo fondamentale...

Il file manifest.json: cos’è e a cosa serve

Il file manifest.json è un componente chiave nelle applicazioni web moderne,...

Java: cos’è e a cosa serve l’operatore modulo (%)

In Java, l'operatore modulo è rappresentato dal simbolo "%"...

Radice quadrata in C: vediamo come calcolarla in diversi modi

La radice quadrata è un'operazione matematica piuttosto comune (in...

Sperimentare la sequenza di Collatz in C++

Vediamo come verificare la congettura di Collatz con C++....
Pubblicità