Zufallszahlen in C, der Computer muss Zahl erraten?

1 Antwort

Zufallszahlen erzeugt man mit der rand-Funktion:

srand(time(NULL));
int zahl1 = rand() % 10;

In diesem Beispiel ist das ist dann eine Zahl zwischen 0 und 10, wobei die 0 vorkommen kann, die 10 aber nicht.

Dann würde das Programm sagen können: "War es die 37" und du sagst dann ja oder nein.

Wenn das Programm die Zahl wirklich auch finden soll, dann kann das nur über eine binäre Suche sinnvoll funktionieren - das hat dann aber nichts mehr mit Zufallszahlen zu tun. Sprich, der Computer muss eine Zahl ausgeben, Du sagst dann "größer" oder "kleiner" und der Computer sucht im entsprechenden Intervall eine neue Zahl.

Beispiel: Du denkst Dir eine Zahl zwischen 0 und 100 aus, beispielsweise die 17.

Der Computer fragt: 50? (Mitte zwischen 0 und 100)

Du sagst "kleiner"

Der Computer fragt: 25? (Mitte zwischen 0 und 50)

Du sagst "kleiner"

Der Computer fragt: 12? (Mitte zwischen 0 und 25)

Du sagst "größer"

Der Computer fragt: 18? (Mitte zwischen 12 und 25)

Du sagst "kleiner"

Der Computer fragt: 15? (Mitte zwischen 12 und 18)

Du sagst "größer"

Der Computer fragt: 16? (Mitte zwischen 15 und 18)

Du sagst "größer"

Der Computer fragt: 17? (Mitte zwischen 16 und 18)

Fertig


userx0d 
Beitragsersteller
 11.01.2019, 15:08

Ah okay danke, aber ich hab's versucht aber es funktioniert nicht. Kannst du Quellcode schicken. Dann kann ich schauen wo der Fehler liegt.

0
ohwehohach  11.01.2019, 17:04
@userx0d

Nö. Andersrum wird ein Schuh draus - Du schickst Deinen Code und ich kann schauen, was evtl. nicht stimmt.

2
userx0d 
Beitragsersteller
 13.01.2019, 18:07
@ohwehohach

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int main(void)

{

   int zahl=0;

   int maximum=0,minimum=0,ergebnis=0;

   srand(time(NULL));

   printf("Bitte Maximum eingeben: ");

   scanf("%d",&maximum);

   printf("Bitte Minimum eingeben: ");

   scanf("%d",&minimum);

   if(zahl>ergebnis){

       printf("Zu klein");

   }

   if(zahl<ergebnis){

       printf("Zu Groß");

   }

   if(zahl==ergebnis){

       printf("Richtig");

   }

   return EXIT_SUCCESS;

}

ich komm nicht weiter:) Bitte um Hilfe!!!

0
ohwehohach  13.01.2019, 18:51
@userx0d

Naja, es würde von mal helfen, wenn Du eine Zufallszahl erzeugst. Das tut Dein Code nicht. Der initialisiert den Zufallszahlengenerator, aber das war's auch. Weiterhin gibst Du nur einen minimalen und maximalen Bereich ein, in dem Deine Zufallszahl liegt - aber nicht die Zahl selbst.

0