Problema con funzione "rand"

di il
1 risposte

Problema con funzione "rand"

Ciao a tutti,
sono nuovo del forum e dell'ambiente della programmazione, e da molto poco mi sono messo a leggere qualcosa sul C.
Ho scritto questo programmino molto semplice:


 #include <stdio.h>
 
 void main(void)
 {
 
    int numeri,contnumeri,max,min,numero;
    printf("quanti numeri devono essere generati? --> ");
    scanf("%i",&numeri);
    do
    {
       printf("a partire da che numero? --> ");
       scanf("%i",&min);
       printf("fino a che numero? --> ");
       scanf("%i",&max);
       if(max<=min)
          printf("attenzione! errore nell'acquisizione dato minimo e massimo!\n");
    }while(max<=min);
  
    contnumeri=0;
    while(contnumeri<numeri)
    {
       numero=min+(rand()%(max-min));
       printf("%i\n",numero);
       contnumeri++;
    }
    getchar();
  }

Quello che dovrebbe fare (ed effettivamente fa) è chiedere quanti numeri generare casualmente, chiedere tra quali numeri (minimo e massimo) i numeri casuali si troveranno, e generare numeri casuali.
Il programma funziona, ma mi genera sempre gli stessi numeri... come posso risolvere???
Grazie in anticipo,
Nicola

1 Risposte

  • Re: Problema con funzione "rand"

    Se il programma genera sempre gli stessi numeri vuol dire che non hai richiamato srand.
    La funzione srand inizializza il generatore di numeri casuali e per fare in modo che questa inizializzazione sia sempre diversa si passa a srand un valore che dipende dal tempo (ovvero si legge l' orologio del pc).

    All' inizio del programma aggiungi questa riga.
    
    srand((unsigned)time(NULL));
    
    In certi ambienti esiste anche randomize che fa la stessa cosa ma non è standard.
Devi accedere o registrarti per scrivere nel forum
1 risposte