Lancio Monetina.

di il
11 risposte

Lancio Monetina.

Nel seguente esercizio svolto, vorrei essere sicuro di aver compreso quello che accade......

In sostanza, si ha la funzione flip, poi si entra nel main e la funzione srand ...., rileva il tempo del nostro PC, quindi genera numeri casuali in base al tempo che rileva.
Si hanno due variabili i inizializzate =0.
Poi entriamo nel ciclo for.

Nel ciclo for si resta fino al loop=100.
Bene, e se io resto nel ciclo for fino a 100 volte, come fa quel
if(flip()==0)
a variare?
Cioe', se la prima volta e' ==0, da dove lo prende quel valore che sara' ==0?
E da dove lo prendera' il valore quando sara' diverso da ==0 ?

Anche perche', se si entra nel ciclo for, si resta li fino a 100 volte, e se la funzione srand.....
si trova prima del ciclo for, come fa a dettare valori differenti dal momento che ci sono 100 lanci che prima devono essere compiuti?


Oppure accade che il ciclo for itera la prima volta, poi ritorna all'inizio del main ma all'interno dello stesso, rileva nuovamente il valore dello srand...., poi arriva ad iterare la seconda volta, ritorna sempre all'inizio del main ma sempre all'interno e rileva srand.... nuovamente ecc. fino a 100 volte?
Allegati:
31893_0af62d42ab9a1a8946d97c550c200b54.jpg
31893_0af62d42ab9a1a8946d97c550c200b54.jpg

31893_480fa191dacd9270de16341fc0b0cb85.jpg
31893_480fa191dacd9270de16341fc0b0cb85.jpg

11 Risposte

  • Re: Lancio Monetina.

    Sei fuori strada. Devi capire cosa succede dentro la funzione flip ogni volta che viene chiamata
  • Re: Lancio Monetina.

    Io penso che la funzione flip e' legata alla funzione srand che in base all'istante si avra' un valore differente, giusto?
  • Re: Lancio Monetina.

    Ergo....
    Considerando quello che ho trovato in rete:

    Flip bits
    Flips bit values converting zeros into ones and ones into zeros:
    (1) all bits
    Flips all bits in the bitset.
    (2) single bit
    Flips the bit at position pos.

    E' proprio una caratteristica della funzione flip quella di alternare i bit in 1 o 0, giusto?


    E scusami, ma allora la funzione srand..., che ruolo ha nel main?
  • Re: Lancio Monetina.

    La srand inizializza il generatore di valori random.

    Dentro la flip si utilizza la funzione rand.

    Studia la documentazione delle due funzioni, è quello che ti manca per capire, srand e rand

    Non devi cercare la flip in rete, non esiste una funzione flip generica ma è quella che è stata scritta in questo specifico caso. Devi esaminare il codice dentro la flip
  • Re: Lancio Monetina.

    oregon ha scritto:




    Dentro la flip si utilizza la funzione rand.

    Scusami, ma dove si vede rand nel programma?
    Io vedo srand.

    Che sia un qualcosa di randomico e' ovvio, la funzione rand genera interi in un determinato intervallo......

    Desidererei restare in tema al flip e quindi?
  • Re: Lancio Monetina.

    A mio parere stai fuorviando il thread!

    Ecco qui:
    Allegati:
    31893_0cfd2f499ceda6092241359aa1688b99.jpg
    31893_0cfd2f499ceda6092241359aa1688b99.jpg
  • Re: Lancio Monetina.

    Ricominci col fuorviare? Quando non capisci spari questa stupidaggine del fuorviare?

    Nel codice c'è

    int value = rand() % 2:

    Mi riferisco a quella linea dove c'è la chiamata a rand che è una delle più semplici funzioni di libreria del C che i programmatori devono conoscere.

    flip che hai mostrato è un metodo della classe bitset del c++ che NULLA c'entra con questo codice!
    La funzione flip in questo codice la potresti chiamare pincopallino() e non cambierebbe nulla.

    Tu non capisci quello che stai facendo e va bene ma se non ti fidi di chi questa roba elementare l'ha fatta per 40 anni e tenta di spiegartela, va beh, fai come vuoi, mi sono stancato!!
  • Re: Lancio Monetina.

    Oregon, mi devi scusare, hai pienamente ragione sulla linea della rand...., ma io non stavo pensando a quella parte del programma in quanto mi ero fossilizzato sulla prima parte dello stesso, ero rimasto intrappolato nelle iterazioni del ciclo for.

    In effetti, il ciclo for itera da 1 fino a 100 e quindi io penso che prima devono finire le iterazioni fino a 100 e poi si esce dal ciclo for per poi trovare le riga che seguono nel programma e in quel caso si incontrano le funzioni rand....., giusto?

    E questo il mio dubbio principale e volevo chiederti se ho compreso questo modo di iterare?

    Questa volta non volevi fuorviare, mi devi scusare, io sto cercando di comprendere le sequenze del ciclo for ecc
  • Re: Lancio Monetina.

    Se vuoi capire devi seguire quello che ti si dice e non andare per conto tuo.

    La for ripete il codice contenuto al suo interno. Questo devi averlo chiaro.
    Quindi la prima volta chiama la flip, esegue tutte le righe della flip, controlla con la if il valore restituito dalla flip e incrementa la variabile giusta. Poi ripete al seconde giro la chiamata della flip e così via per 100 volte.

    Poi esegue il codice che segue la for.

    Il programma all'inizio esegue la main e termina con la fine della main.
  • Re: Lancio Monetina.

    Adesso e' tutto chiaro! Ti ringrazio!

    Per quanto riguarda le altre funzioni rand e srand le ho studiate e so cosa fanno, il casino che stavo facendo erano le sequenze.

    Ti ringrazio e perdonami!
  • Re: Lancio Monetina.

    Per riuscire a capire meglio.

    Fai una prova, prendi questo programma e lo scrivi, per ogni riga di codice e per ogni variabile scrivi un commento dove spieghi perché l’hai inserita nel programma e a cosa serve, compresi gli “#include”. Ti risparmio le parentesi graffe.
    [CODE] int value=rand()%2; // Genera un valore casuale compreso tra 0 e 1 // 0 = pari // 1 = dispari
Devi accedere o registrarti per scrivere nel forum
11 risposte