Ziegenproblem/3 Türen Problem/Monty-Hall-Problem



  • Hallo, ich soll ein C-Proagramm schreiben, welches sich mite dem 3Türen Problem beschäftigt.
    Ich soll 1000 Durchlaüfe spielen, dabei soll ich einmal bei meiner Türe bleiben und das andere Mal die Türe wechseln.

    Ich soll den Zufallsgenerator rand() benutzen, der Zahlen von 0 bis 32767 zieht.
    Außerdem soll ich den Aufruf srand(time(NULL)) benutzen.

    Ausgabe sollte wie folgt aussehen:
    Versuche: 1000
    Tuer beibehalten: ... Treffer
    Tuer gewechselt: ... Treffer

    Hier ist meine vorläufige Lösung, die nicht funktioniert:

    #include<stdio.h>
    #include<time.h>
    #include<stdlib.h>

    int main() {
    double n,Versuche,Anzahl_Moegl,Tur_halten,_Tur_wechseln;
    srand(time(NULL));

    Anzahl=(0+(rand()%32767);
    n=srand(time(NULL));
    Versuche=1000;
    Anzahl_Moegl=Anzahln;
    Tur_halten=Versuche
    (1/3Anzahl_Moegl);
    Tur_wechseln=Versuche
    (2/3*Anzahl_Moegl);

    printf("Versuche: %lf \n",Versuche);
    printf("Tuer beibehalten: %lf \n",Tur_halten);
    printf("Tuer gewechselt: %lf \n,Tur_wechseln);

    return 0;
    }

    Hoffe mir kann jemand helfen, danke im Voraus!



  • Was genau funktioniert nicht?
    Was erwartest Du, dass das Programm tun soll, und was tut es stattdessen?



  • Wenn es heißt "1000 Durchläufe" erwarte ich irgendwie eine Schleife.

    srand macht man einmal am Programmanfang und dann nicht mehr. Zudem gibt srand auch keinen Wert zurück.
    Das sollte auch der Compiler anmeckern. Zumindest mit einer Warnung.



  • Das Programm soll mir ausgeben, wie oft ich mit der einen Methode (also die Türe nicht wechsle) oder der anderen Methode (sich nach dem öffnen der ersten Türe umentscheiden) einen Gewinn lande.



  • fred1234567890 schrieb:

    Ziegenproblem/3 Türen Problem/Monty-Hall-Problem

    Du sollteste die Ziegensprache lernen um die Probleme deiner Ziegen besser verstehen zu können. määäh määäh määääääääääh

    😃

    Ok jetzt wieder ernst.^^

    btw. Anzahl_Moegl muss nicht double sein unsigned würde reichen, aber das nur so nebenbei.

    Hier kannst du das 0+ weglassen

    Anzahl=(0+(rand()%32767);
    n=srand(time(NULL));
    

    Ich denke du willst verschiedene Zahl generieren oder?
    Falls ja, dann muss der srand Befehl vor dem rand Befehl kommen also so:

    n = srand(time(NULL));
    Anzahl= rand()%32767;
    

    fred1234567890 schrieb:

    Ich soll 1000 Durchlaüfe spielen

    Also soll 1000 mal etwas generiert werden?

    Dann solltest du eine for Schleife benutzen:

    int i;
    for(i=0;i<1000;i++)
    {
    // Irgendein Code
    }
    

    määh Der Ziegen Hirte 😃



  • Danke 😋



  • Der Ziegen Hirte schrieb:

    ...ganz viel Text..

    Ich bin der Meinung, dass ich sinngemäß das Gleiche geschrieben habe.

    War das so unverständlich?



  • DirkB schrieb:

    Der Ziegen Hirte schrieb:

    ...ganz viel Text..

    Ich bin der Meinung, dass ich sinngemäß das Gleiche geschrieben habe.

    War das so unverständlich?

    nein, aber des hirtens beitrag ist im gegensatz zu deinem
    - lustig
    - enthält beispielcode



  • DirkB schrieb:

    Ich bin der Meinung, dass ich sinngemäß das Gleiche geschrieben habe.
    War das so unverständlich?

    Für den Thread starter schon, deshalb hab ich etwas ausführlicher geantwortet wo ist das Problem? Man kann nicht immer alles sofort verstehen.

    ผมชอบการเขียนโปรแกรม


Anmelden zum Antworten