Durchschnittsberechnung zweier Arrays

Skyraz00

Grünschnabel
Hi,
ich hab ein Programm geschrieben dass das Würfelspiel Craps simuliert, jetzt will ich die Gewinnchance und die durchschnittliche länge eines Craps Spiels (anzahl der Würfe) berechnen. Jetzt bekomme ich aus meiner Gewinnchance Rechnung kein logisches ergebnis heraus und für das andere fehlt mir noch der Ansatz könnte mir da jemand helfen?

C++:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

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

   int wuerfel1, wuerfel2, sum, summe = 0;
   int gewonnen[50] = { 0 };
   int verloren[50] = { 0 };
   int summe1 = 0;
   int summe2 = 0;
   int durchschnitt;

   int zug, x = 1000000, wuerfe = 0; // Array

   float wahr;

   while (wuerfe < x)
   {
       wuerfel1 = rand() % 6 + 1;
       wuerfel2 = rand() % 6 + 1;
       sum = wuerfel1 + wuerfel2;
       zug = 1;

       if (sum == 7 || sum == 11)
       {
           gewonnen[zug]++;
       }
       else if (sum == 2 || sum == 3 || sum == 12)
       {
           verloren[zug]++;
       }
       else
       {
           zug = 2;
           do
           {
               wuerfel1 = rand() % 6 + 1;
               wuerfel2 = rand() % 6 + 1;
               summe = wuerfel1 + wuerfel2;
               if (summe == 7)
               {
                   verloren[zug]++;
               }
               else if (summe == sum)
               {
                   gewonnen[zug]++;
               }
               zug++;
           } while (summe != sum && summe != 7);
       }
       wuerfe++;
   }
   printf("  Wurf | Gewonnen | Verloren | Gewinnchance\n");
   for (zug = 1; zug <= 50; zug++)
   {
       if (gewonnen[zug] >= 1 || verloren[zug] >= 1)
       {
           wahr = gewonnen[zug] + verloren[zug];
           wahr = (gewonnen[zug] / wahr) * 100;
           printf("%6d | %8d | %8d | %3.2f %%\n", zug, gewonnen[zug], verloren[zug], wahr);
       }
       
   }
   
   // Durchschnittsberechnung
   
   float wuerfe3 = 0;

   for (int i = 0; i < 50; i++)
   {
       wuerfe3 += (1 + i) * (gewonnen[i] + verloren[i]);
   }
   wuerfe3 = wuerfe3 / 1000000;

   printf("\n\nDer durchschnitt betreagt: %i\n\n", wuerfe3);
 

Technipion

Erfahrenes Mitglied
Hallo Skyraz00,
Jetzt bekomme ich aus meiner Gewinnchance Rechnung kein logisches ergebnis heraus und für das andere fehlt mir noch der Ansatz könnte mir da jemand helfen?
Das ist zu ungenau. Was für ein Ergebnis erhältst du? Warum hältst du das für unlogisch? Was erwartest du hier?

Was die Ansätzen angeht: Du brauchst mindestens zwei Zählvariablen. Eine für die Anzahl an gespielten Würfen, und eine andere für die Anzahl an gespielten Spielen. Dann musst du nur Anzahl Würfe / Anzahl Spiele rechnen (auf float achten) und schon hast du die durchschnittliche Wurfanzahl. Gleiches kannst du auch für die Gewinnchance machen: Anzahl Gewinne / Anzahl Spiele.

Ich kenne Craps leider nicht, aber interessanterweise stehen diese Werte sogar auf Wikipedia: https://de.wikipedia.org/wiki/Craps

Gruß Technipion