Funzione rand() in c

di il
4 risposte

Funzione rand() in c

Ciao a tutti ho un problemino da vero niubbo da porvi.

Posto che rand seleziona un tot di numeri da 0 a tot come posso gnerare casualmente valori all'interno di un certo range x y?

grazie ciao

4 Risposte

  • Re: Funzione rand() in c

    Ciao,

    Se vuoi generare valori equiprobabili in un dato range l'algoritmo sarà:
    valore=minimo+rand tra zero e massimo-minimo

    Pertanto:
    int valore=min+(rand()%(max-min));

    Dati min e max interi... volendo potresti #definire semplicemente una macro:
    #define RAND(a,b) ((a)+(rand()%((b)-(a))))

    Ciaociao
  • Re: Funzione rand() in c

    Ho messo x come valore min y come valore max ma non mi da il risultato ecco il codice:

    #include <iostream.h>
    #include <stdlib.h>
    #include <math.h>
    #include <time.h>

    int main()
    {
    int x,y,z;
    srand(time(NULL));
    x=1;
    y=10;
    z = x + (rand() % (y-x));
    printf("Il valore di x = ",x);
    return 0;
    }

    non mi gira o meglio non mi da niente perchè?
  • Re: Funzione rand() in c

    Vi prego aiutatemi sto impazzendo non capisco il perchè non mi dia niente come risultato
  • Re: Funzione rand() in c

    Ciao,

    Beh... se stampi il valore di x invece che quello di z otterrai sempre 1...

    Ad ogni modo c'è una piccola correzione da fare (ho scritto di getto, chiedo scusa). Il codice proposto calcola un intero compreso tra min e max-1... l'algoritmo corretto è:
    valore=min+(rand()%(max-min+1))

    Ciaociao
Devi accedere o registrarti per scrivere nel forum
4 risposte