C Language Generazione di numeri casuali di base

Esempio

La funzione rand() può essere utilizzata per generare un valore intero pseudo-casuale compreso tra 0 e RAND_MAX (incluso 0 e RAND_MAX ).

srand(int) viene utilizzato per seminare il generatore di numeri pseudo-casuali. Ogni volta che rand() viene seminato con lo stesso seme, deve produrre la stessa sequenza di valori. Dovrebbe essere seminato solo una volta prima di chiamare rand() . Non dovrebbe essere ripetutamente seminato o risettato ogni volta che si desidera generare una nuova serie di numeri pseudocasuali.

La pratica standard consiste nell'usare il risultato del time(NULL) come seme. Se il generatore di numeri casuali richiede una sequenza deterministica, è possibile inizializzare il generatore con lo stesso valore all'inizio di ciascun programma. Generalmente non è richiesto per il codice di rilascio, ma è utile nelle esecuzioni di debug per rendere riproducibili i bug.

Si consiglia di seminare il generatore sempre, se non seminato, si comporta come se fosse seminato con srand(1) .

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

int main(void) {
    int i;
    srand(time(NULL));
    i = rand();

    printf("Random value between [0, %d]: %d\n", RAND_MAX, i);
    return 0;
}

Uscita possibile:

Random value between [0, 2147483647]: 823321433

Gli appunti:

Lo standard C non garantisce la qualità della sequenza casuale prodotta. In passato, alcune implementazioni di rand() avevano gravi problemi nella distribuzione e casualità dei numeri generati. L'uso di rand() non è raccomandato per esigenze serie di generazione di numeri casuali, come la crittografia.