Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Spiegazione casi particolari rand()

    Ciauzzzzzzzzzzzz!
    Salve ragazzuoli, posso chiedervi una cosa?
    Non so come utilizzare la funzione rand(), di generazione casuale di numeri, come si fa esempio a poter scegliere dei numeri in un insieme definito, mi spiego meglio, per esempio se devo stampare dei numeri interi compresi tra 3 e 27?
    Oppure ancora più specifico, in numero compreso in questo insieme (3,98,27,5,13)?
    Vi ringrazio in anticipo!

  2. #2
    dei numeri in un insieme definito, mi spiego meglio, per esempio se devo stampare dei numeri interi compresi tra 3 e 27?
    valore = rand() % MAX + MIN;

    Oppure ancora più specifico, in numero compreso in questo insieme (3,98,27,5,13)?
    Metti gli elementi in una struttura dati pre-inizializzata e accedi agli elementi con un indice generato casualmente.

  3. #3
    Dopo aver inizializzato il generatore di numeri casuali con srand usa questa funzione che ho scritto:
    codice:
    int nrand(int min, int max)
    {
        max-=min;
        if (max<=RAND_MAX)
            return (rand()%max)+min;
        else
            return ((int)((double)rand()/(double)max*RAND_MAX))+min;
    }
    ; min e max sono ovviamente i due estremi della gamma di valori che vuoi ottenere.
    Se non lavori con numeri molto grossi in realtà di solito è sufficiente usare
    codice:
    int tuoValore;
    tuoValore=(rand()%(max-min))+min
    //o, se il minimo è 0
    tuoValore=rand()%max;
    .
    Quanto alla selezione di un numero compreso in un insieme basta fare così:
    codice:
    int nrange[]={3,98,27,5,13}; //l'insieme in cui sono contenuti i numeri da estrarre
    int tuoValore=nrange[rand()%(sizeof(nrange)/sizeof(int))];
    .
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Esempio completo:

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int rand_int (int min, int max)
    {
        double d;
    
        d = rand () / (RAND_MAX+1.0);
        return ((int) (d * (max-min+1))) + min;
    }
    
    int main (void)
    {
        int i;
    
        srand ((unsigned int) time (NULL));
    
        for (i = 0; i < 30; i++)
            printf ("%d ", rand_int (-10, +10));
    
        printf ("\n");
    
        return 0;
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Non posso far altro che ringraziarvi!
    Veramente molto gentili, una mano santa...! :quote:

  6. #6
    Un' ultima cosa, mi sto preparando per un esame, e il libro che sto utilizzando è il DEITEL & DEITEL, sapreste consigliarmi qualche altro titolo?
    Io ho delle difficoltà con le strutture, magari conoscete qualcuno che ne tratta in modo ancora più dettagliato?
    Vi ringrazio ancora per le vostre risposte e il vostro tempo.

  7. #7
    Io ho delle difficoltà con le strutture, magari conoscete qualcuno che ne tratta in modo ancora più dettagliato?
    Ogni manuale completo tratta le strutture (che poi non richiedono molto tempo per il loro studio). Comunque una buona guida e' sicuramente questa: McGraw Hill Fondamenti di C++ 2/ed, anche se penso che il libro che stai leggendo vada gia' piu' che bene, e se hai dei problemi con le struct poi sempre chiedere qui!!

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304

    Moderazione

    Magari, la prossima volta, indicare anche il linguaggio...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Se ti interessano trovi diversi esempi che ho tratto da esercitazioni/esami del corso di Programmazione dell'università (quanti ricordi, il primo corso sulla programmazione dei 3 anni ) sul mio sito, diversi usano le strutture. C'è pure testo e soluzione della prova di labo che insieme allo scritto mi ha fruttato la lode
    GreyFox (Linux registered user #435102)
    greyfox.imente.org - GreyFox's shots (photo gallery)
    $ cd /pub
    $ more beer

  10. #10
    Vi ringrazio tutti quanti, siete stati molto gentili...
    Cmq il linguaggio è il C!
    :quote:

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.