[C] Funzione rand() piccolo aiuto

di il
2 risposte

[C] Funzione rand() piccolo aiuto



Ciao a tutti
sono un nuovo iscritto e mi chiamo Roberto.

Non riesco a scrivere un istruzione o un piccolo programma
per visualizzare un numero casuale preso da questo gruppo
di interi : (6,10,14,18,22),
mentre riesco a farlo se non c'e' un gruppo cioe' se il
numero e tra un intervallo di valori (es.1-100) oppure (50-100).

E' un esercizio che devo fare usando l'istruzione rand(); .

ciao!
Robi75

2 Risposte

  • Re: [C] Funzione rand() piccolo aiuto

    Beh, il problema è facilmente risolvibile in due modi:

    1) [sconsigliato] - generi con rand() valori tra il più piccolo numero ed il più grande (tra quelli che ti interessano ovviamente) e poi fai uno switch, del tipo:
    
    int min=6;
    int max=22;
    int num=min+rand()%max;
    
    switch(num){
    case 6: 
        [...]
        break;
    case 10:
        [...]
        break;
    case 14:
        [...]
       break;
    etc..etc...
    }
    
    Occhio ad un'eventuale clausola default in quanto i valori generati da rand() sono effettivamente tra min e max, gli switch case servono appunto per scegliere solo i valori che ti servono.

    2) metti in un array i valori da te scelti, e fai un rand() tra 0 e il numero di elementi dell'array. Ecco un esempio:
    
    int numeri[]= {6, 10, 14, 28, 22}; // sono esattamente 5 numeri, quindi la dimensione è 5
    printf("%d\n", numeri[ rand()%5 ] );
    
    Spero sia stato d'aiuto. Ah, ho scritto solo alcune righe ovviamente, se vuoi che i due codici funzionino devi inserirli in un main() ed eliminare quei [..] e quell'etcetc...
  • Re: [C] Funzione rand() piccolo aiuto

    Ero riuscito a risolverlo in un altro modo
    ma il tuo metodo degli array (che non ho ancora studiato) e' meglio!

    grazie dell'aiuto
    Roberto

Devi accedere o registrarti per scrivere nel forum
2 risposte