Announcement

Collapse
No announcement yet.

Monetina falsata [giochino]

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Monetina falsata [giochino]

    PHP Code:
    /*
    Avendo una monetina falsata riuscire a bilanciare la possibilità di
    uscita di testa(0) e di croce(1).
    */
    #include <st***.h>
    #include <stdlib.h>
    #include <time.h>


    int monetina_cattiva(){
    int indice;
    int possibilita[]= {0000000111};

    double random_number rand() / (double)RAND_MAX;
    indice =  random_number *= 10;
    return 
    possibilita[indice];
    }

    int monetina_buona(){
    int a monetina_cattiva();
    int b monetina_cattiva();
    while(
    == b)
    {
    monetina_cattiva();
    monetina_cattiva();
    }
    if(
    a==0)
    return 
    1;
    else
    return 
    0;
    }



    main(){
    srand(time(NULL));

    int numero_test 1000;
    int teste 0;

    int i;
    for(
    0numero_testi++){

    int risultato monetina_buona();
    if (
    risultato == 1){
    teste++;
    }


    }
    printf("%.2f\n",(float)teste/numero_test);


  • #2
    visto, in pratica è intorno è questo ciclo che continuamente viene ripetuto finchè non escono diversi

    while(a == b) { a = monetina_cattiva(); b = monetina_cattiva(); }

    (;
    | VFX Artist, C++ Programmer, HW Overclocker | Web: xgiovio.com Email: xgiovio@gmail.com Twitter: @xgiovio

    Comment


    • #3
      Soluzione mia prendo il vettore di 10 lo spacco a metà scelgo a caso uno tra i 2 vettori e a caso farò generare un numero al più grande come il vettore quello comparirà sullo schermo, poi salvo il valore a caso accedo al secondo vettore e ci metto il numero che é uscito (0 o 1) e il valore pretendere del vettore viene spostato nel secondo spero di essermi spiegato anche se non credo xd

      Comment


      • #4
        Broke io sinceramente non ho capito

        Comment


        • #5
          spacchi il vettore a metà hai il vettore x1 e il vettore x2 faccio una random che genera un numero tra 0 e 1 se esce 1 mi dirigo nel primo vettore se esce 2 mi dirigo nel secondo adesso individuato il vettore scelgo a random un numero y che sarà il mio indice , adesso il lancio produrrá il risultaro di x1(y) oppure x2 (y) che verrá visualizzato in output come testa o croce, il numero uscito lo salvo il una variabile mi dirigo nell'altro vettore a random mi scelgo un indice y2 dove prelevo il numero e scambio i valori di x1 (y) e di x2 (y2) e cosi via esempio pratico :


          X1= 00000 x2=00111


          Random dice 0 mi dirigo in x1 genero 1 indice casuale (3) quindi l'output sará x1 (3)= testa salvo il una variabile in contenuto di x1 (3) =0 mi dirigo in x2 faccio una random che genera 5 mi dirigo in x2 (5) prelevo 1 e lo scambio con 0 .

          nuovo vettore :

          X1= 00100 x2= 00110 e procedo cosi sempre
          Last edited by Broke31; 04-24-2013, 10:32 PM.

          Comment


          • #6
            se consideri questa parte
            PHP Code:
            int a monetina_cattiva(); int b monetina_cattiva(); 
            supponiamo che a sia sempre 0 e che b sia sempre 1
            adesso non sarà cosi ma a culo potrebbe esserlo

            quando arriviamo qui:
            PHP Code:
             for(0numero_testi++){   int risultato monetina_buona(); if (risultato == 1){ teste++; } 
            andiamo a sommare tutte le teste e quindi avremmo ad esempio che su tutti i numero_test saranno sucite tutte teste.

            non è cosi?!
            | VFX Artist, C++ Programmer, HW Overclocker | Web: xgiovio.com Email: xgiovio@gmail.com Twitter: @xgiovio

            Comment


            • #7
              Per xgiovio, allora il problema sta proprio nel non potersi salvare il numero di testa o di croce uscite fino ad ora, ogni estrazione deve essere indipendente dalle precedenti, altrimenti ci troveremo in un caso di 50% di testa e altrettanto di croce. in realtà,con una moneta normale, lanciandola 10 volte può uscire 4 volte teste e 6 volte croce o viceversa.
              bisogna riprodurre la "realtà" altrimenti è come non lanciare una moneta

              Comment


              • #8
                Originally posted by TheAvenger View Post
                Per xgiovio, allora il problema sta proprio nel non potersi salvare il numero di testa o di croce uscite fino ad ora, ogni estrazione deve essere indipendente dalle precedenti, altrimenti ci troveremo in un caso di 50% di testa e altrettanto di croce. in realtà,con una moneta normale, lanciandola 10 volte può uscire 4 volte teste e 6 volte croce o viceversa.
                bisogna riprodurre la "realtà" altrimenti è come non lanciare una moneta
                boh continuo a non capire, cioè io vedo nel main una prima forzatura che incrementa solo le teste e nella moenina_buona() un'altra forzatura che aspetta che le due chiamatate a monetine_cattiva() escano diverse.
                Non saprei. Mi sa che non ci arrivo (:
                | VFX Artist, C++ Programmer, HW Overclocker | Web: xgiovio.com Email: xgiovio@gmail.com Twitter: @xgiovio

                Comment


                • #9
                  il main lo uso solo per riuscire a contare ed avere una statica delle croci e delle teste, se vedi infatti esce
                  main(){
                  srand(time(NULL)); //lo faccio per riuscire a randomizzare.

                  int numero_test = 1000; //il numero di monetine che voglio lanciare
                  int teste = 0; //devo contare uno dei due casi, che sia testa o croce è indifferente (per riuscire a dire con che probabilità sono uscite)

                  int i; //la utilizzo per riuscire a dire quante volte deve effettuare il lancio della monetina(cioè del ciclo)
                  for(i = 0; i < numero_test; i++){

                  int risultato = monetina_buona(); //lancio
                  if (risultato == 1){ //se è testa incremento
                  teste++;
                  }


                  }
                  printf("%.2f\n",(float)teste/numero_test);//faccio uscire la probabilità che è uscito teste(infatti faccio Numero di teste/il numero di lanci)
                  }

                  Comment


                  • #10
                    Dovremmo vederlo assieme di persona.
                    In realta non è vero che hai un numero uguale di monete dispari e pari perche quando chiami monetina cattiva 2 volte in un for stai considerando 1 sola giocata. Poi tra l'altro la chiami 2n volte finche sono diverse .
                    Quindi nel main è come se avessi fatto una giocata ma realmente l'hai lanciata piu volte.
                    Mi sbaglio?
                    | VFX Artist, C++ Programmer, HW Overclocker | Web: xgiovio.com Email: xgiovio@gmail.com Twitter: @xgiovio

                    Comment


                    • #11
                      non ti sbagli è proprio quello il punto, tu devi trovare un modo di lanciare questa "monetina_cattiva" per riuscire a bilanciarla il numero di teste e di croci.
                      In c le regole sono:
                      1)Si può modificare solo la funzione monetina_buona;
                      2)Non è possibile dichiarare variabili statiche e vettori per riuscire a memorizzare il numero di teste e di croci fino a quel momento;

                      Tutto il codice scritto al di fuori di quella funzione serve solo per controllare la funzionalità.

                      Comment


                      • #12
                        Pero gia il fatto che esiste un array con dati sfalsati implica che l'evoluzione la sai a priori. (:
                        | VFX Artist, C++ Programmer, HW Overclocker | Web: xgiovio.com Email: xgiovio@gmail.com Twitter: @xgiovio

                        Comment

                        Working...
                        X

                        Google Profile


                        My name is Giovanni Di Grezia, but people call me xgiovio.

                        Here is my homepage:.

                        I'm a VFX Artist and Software Developer.

                        Giovanni Di Grezia