Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Funzione rand e numeri casuali

    Salve,

    Sono un neofita del C, ed avrei bisogno di un aiutino da parte vostra riguardo alla generazione dei numeri "casuali" attrverso la funzione rand().

    Attraverso una singola istruzione, devo visualizzare un numero casuale tratto dai seguenti gruppi di numeri:

    a) 2, 4, 6, 8, 10
    b) 3, 5, 7, 9, 11
    c) 6, 10, 14, 18, 22

    Io avevo editato questa istruzione che però mi genera un numero compreso tra gli estremi del gruppo:

    a) istr.: printf ("n = %d", 2 + (rand() % 10));
    dovrei teoricamente generare un numero che sia pari.

    b) istr.: printf ("n = %d", 3 + (rand() % 11));
    dovrei generare un numero che sia dispari.

    c) istr.: printf ("n = %d", 6 + (rand() % 22));


    Ringrazio tutti anticipatamente.
    Ciao.

  2. #2

    Boh

    possibile che nessuno mi sappia rispondere su questi semplici questiti???

    boh...

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    127
    la prima cosa che mi viene in mente:

    crea un array con dentro tutti i numeri da "estrarre":

    se il tuo array è lungo 10, fai eseguire la funzione random con estremi 0 e 10.

    utilizza poi il numero scelto come indice del tuo array e il gioco è fatto!

    sono stato chiaro?

  4. #4

    Dimenticanza...

    Si sei stato chiaro,
    ma ho dimenticato di dire che non posso utilizzare un array.

    Devo trovare il modo più semplice possibile,...non so per esempio avevo pensato se fosse possibile utilizzare l'operatore % per determinare se il numero è pari per il primo caso e se è dispari per il secondo.

    Per il terzo non so...

    P.S.: scusami per la dimenticanza sull'array.

    Grazie! :tongue:

  5. #5

    Re: Funzione rand e numeri casuali

    Originariamente inviato da v.pantile
    a) 2, 4, 6, 8, 10
    b) 3, 5, 7, 9, 11
    c) 6, 10, 14, 18, 22
    La serie a) sono i numeri 1, 2, 3, 4, 5 moltiplicati per 2;
    Gli elementi della serie b) sono invece gli elementi della serie a) aumentati di 1, e la serie c) è la serie b) moltiplicata per 2.
    Pertanto:
    codice:
    int random_a() {
      return 2 * (rand() % 5 + 1);
    }
    
    int random_b() {
      return 1 + random_a();
    }
    
    int random_c() {
       return 2 * random_b();
    }
    Errori di sintassi a parte dovremmo esserci
    - "Boy, the food at this place is really terrible."
    - "Yeah, I know, and such ... small portions."

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    127
    anticipato...:quote:
    fortuna che mi è arrivata la mail che mi avvisava della risposta...

  7. #7

    Ok!

    Grazie tante!

    veramente semplice la soluzione.
    Purtroppo ad un neofita come me capita di bloccarsi su delle scemenze...

    Grazie ancora!

  8. #8
    Hai un cervello, usalo. Il problema non era di programmazione ma di trovare il nesso tra le tre serie.
    - "Boy, the food at this place is really terrible."
    - "Yeah, I know, and such ... small portions."

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    127
    forse sono queste le cose più difficili... sai quanto tempo ho buttato (parlo di anni fa) per realizzare il mio giochino di dadi in Pascal?

    Ci ho messo una sera, per realizzare che per estrarre un numero casuale da 1 a 6 era sufficiente estrarne uno da 0 a 5 e sommare 1...

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    127
    azz...è già la seconda volta che mentre vado a cliccare su Invia outlook mi avvisa che Dwenegar mi ha anticipato...:quipy:

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.