C Frage zur Random Funktion

Danny787

Ensign
Registriert
Jan. 2007
Beiträge
178
Ich hab ein Programm programmiert, bei dem der benutzer eine zahl zwischen 0 und 20 erraten soll. er gibt solange eine zahl in diesem zahlenbereich ein, bis die richtige zahl erraten wurde, wobei man nach jeder eingabe darauf hingewiesen wird, ob nun die gesuchte zahl größer oder kleiner als die vom benutzer eingegebene zahl ist.

hier erst mal mein code:

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

int main(void) {
int number;
int random = 5;
int count = 1;

printf("Gesucht ist eine Zahl zwischen 0 und 20\nBitte geben Sie eine Zahl in diesem Zahlenbereich ein:\n\n");
fflush (stdout);
scanf("%d", &number);

if(number == random){
printf("\n\nGlückwunsch, Sie haben die richtige Zahl erraten, gesucht war die Zahl: %d",number);
printf("\n\nAnzahl der Versuche: %d", count);
fflush(stdout);

}

while (number != random){


count++;


if (number < random){

printf("\n\nGesuchte Zahl ist größer als Eingabe %d", number);
fflush(stdout);
scanf("%d", &number);

}else{

printf("\n\nGesuchte Zahl ist kleiner als Eingabe %d", number);
fflush(stdout);
scanf("%d", &number);

}

momentan ist die gesuchte zahl noch von mir festgelegt (int random = 5;) ich will aber nun eine zufallszahl zwischen 0 und 20 generieren lassen.

meine frage ist nun, wie ich das in diesem fall am besten hinbekommen könnte.

danke schonmal für eure hilfe ;)

@Zeroflow danke für die Auskunft, jedoch hat sich nun ein neues problem ergeben und zwar generiert mir das programm nun eine zufallszahl, jedoch nach jedem start des programmes ist es nun immer die selbe zahl (in meinem fall die 2)
ich hätte nun aber gern, dass das programm nach erneuter ausführung jedes mal eine andere zahl generiert, nicht immer nur die zahl 2, so ist das programm auf dauer nutzlos.
hat jemand dafür auch eine lösung???


hier mein neuer code:

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

int main(void) {
int number;
int random = rand()%20+1;
int count = 1;

printf(
"Gesucht ist eine Zahl zwischen 0 und 20\nBitte geben Sie eine Zahl in diesem Zahlenbereich ein:\n\n");
fflush(stdout);
scanf("%d", &number);

while (number != random) {



if (number < random) {

printf("\n\nGesuchte Zahl ist größer als Eingabe %d", number);
fflush(stdout);
scanf("%d", &number);

}

if (number > random) {

printf("\n\nGesuchte Zahl ist kleiner als Eingabe %d", number);
fflush(stdout);
scanf("%d", &number);

}

count++;
}

if (number == random) {
printf("\n\nGlückwunsch, Sie haben die richtige Zahl erraten, gesucht war die Zahl: %d",random);
printf("\n\nAnzahl der Versuche: %d", count);
fflush(stdout);

}
}
 
Zuletzt bearbeitet:
das neue problem wird vom aufbau der rand-Funktione verursacht, mit dieser Funktion ist es möglich pseudo-zufällige Folgen stets zu rekonstruieren, sodass immer dieselbe Folge erzeugt wird, die Zahlen selbst aber pseude-zufällig sind.

Wenn du das nicht willst, muss du den seed der Reihe auch zufällig setzen, das geht z.B. mit:

Code:
srand ( time(NULL) );

einfach am anfang des programms einmal ausführen.

siehe
http://www.cplusplus.com/reference/clibrary/cstdlib/srand/
 
wie kagee schon sagt, musst du den seed initialieren...dazu für so "unwichtige" sachen die nicht kryptographisch stark sein müssen einfach die zeit nehmen

also in den header <time.h> includen und dann hald mit srand initialiereren
 
Zurück
Oben