Zufallszahlen in c++ ??

SchniCom

Ensign
Registriert
Apr. 2004
Beiträge
172
Habe folgendes Problem, was wahrscheinlich recht einfach zu lösen ist...

Ich soll 2 Zufallszahlen generieren und diese miteinander vergleichen. Anschließend soll ich nur als Text ausgeben, ob sie gleich sind oder ungleich. Ich weiß sehr einfach, aber ich bin ziemlich unerfahren und noch sehr dämlich auf dem Gebiet ;)

Das habe ich bisher versucht:

Code:
#include <stdio.h>
#include <time.h>
#include "stdafx.h"


int main ()
{
	int a,b;

	srand (	time(NULL)	);



	{
		a=rand()%49;
		
		b=rand()%49;

	}

		
	if (a==b) 
			
		
		printf("\n die Zahlen sind gleich");
	else printf("\n die Zahlen sind ungleich");

		


}

Dabei spuckt visual studio mir aber ddehler aus und macht nix. Vielleicht kann mir einer auf die schnelle helfen!?
 
Zuletzt bearbeitet von einem Moderator: (Code-Tags; bitte in Zukunft selbst machen!)
Abgesehen von der Thematik: Warum verwendest du printf? Willst du das ganze unter C oder C++ machen?

Gruß,

badday
 
Welchen Fehler spuckt das Visual Studio denn aus?

Wahrscheinlich fehlt dir der stdlib.h

Gruß
BlackMark
 
printf, weil wir damit als Ausgabe in der Vorlesung gearbeitet haben und eigentlich unter c++ :)

Als Fehler wird ausgespuckt:

error C3861: 'time': Bezeichner wurde auch mit einer argumentenbezogenen Suche nicht gefunden
 
Includier mal den stdlib.h

BTW.: Warum machst du geschweifte Klammern um die Zuweisung von a und b?

Edit: Außerdem fehlt dir das return 0 am Ende der main Funktion!

Gruß
BlackMark
 
Zuletzt bearbeitet:
Ja, ich denke es liegt daran, dass du die Bibliothek nicht eingebunden hast. Wie BlackMark schon sagte.

Gruß,

badday
 
Code:
#include <stdio.h>
#include <time.h>
#include "stdafx.h"
#include <stdlib.h>


int main ()
{
	int a,b;

	srand (	time(NULL)	);



	
		a=rand()%49;
		
		b=rand()%49;

	

		
	if (a==b) 
			
		
		printf("%d", "die Zahlen sind gleich");
	else printf("%d", "die Zahlen sind ungleich");

		


}

return 0

so siehts jetzt aus. Jetzt habe ich aber zu Fehler C3861 noch zusätzlich den Fehler C2059: Syntaxfehler: 'return'
 
Zuletzt bearbeitet von einem Moderator: (Code-Tags; bitte in Zukunft selbst machen!)
Ok, so wird das nichts :D

Das return 0 ist ein Befehl und der gehört in die main Funktion, außerdem braucht er wie alle anderen Befehle auch ein Semikolon ( ; ) am Ende.

Gruß
BlackMark
 
hmm, sorry wenn ich mich so blöd anstelle :-|
Also in die main Funktion heißt in die geschweifte Klammer richtig?
Aber auch wenn ich das mache und ein Semikolon dahinter hänge bleibt der ursprüngliche Fehler...
 
Ich sehe grade, dass du printf komplett falsch verwendest.
Ich weiß nicht ob das der Fehler ist, aber ein Fehler ist es auf jeden fall.
Änder mal die printf Funktionen auf das:
printf("%d == %d die Zahlen sind gleich", a, b );
printf("%d != %d die Zahlen sind ungleich", a, b );

Gruß
BlackMark
 
Schau mal hier, da wird auch auf die Probleme mit dem Modulo etc. eingegangen, imo sehr guter Artikel:
http://eternallyconfuzzled.com/arts/jsw_art_rand.aspx

PS:
Daraus resultierend mal ein Beispiel:
PHP:
#include <iostream>

using namespace std;

double uniform_deviate (int seed)
{
    return seed * (1.0 / (RAND_MAX + 1.0));
}

int random(int untergrenze, int obergrenze)
{
    return (int)(untergrenze + uniform_deviate(rand()) * (obergrenze - untergrenze));
}

int main()
{
    time_t now = time (0);
    unsigned char *p = (unsigned char *)&now;
    unsigned seed = 0;
    size_t i;
    for (i = 0; i < sizeof now; i++)
        seed = seed * (UCHAR_MAX + 2U) + p[i];
    srand(seed);

    int random1 = random(1, 49);
    int random2 = random(1, 49);

    if (random1 > random2)
        cout << "Zahl 1 ist größer als Zahl 2" << endl;
    else if (random2 > random1)
        cout << "Zahl 2 ist größer als Zahl 1" << endl;
    else
        cout << "Die Zahlen sind gleich!" << endl;

    return 0;
}
 
Zuletzt bearbeitet:
Zurück
Oben