Zufallszahlen mit rand() in C

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Lars.
Beiträge: 14
Registriert: 02.08.2007 10:34:16

Zufallszahlen mit rand() in C

Beitrag von Lars. » 09.08.2007 12:08:43

Hallo,
ich hab da gerade ein Problem mit Zufallszahlen.
Der folgende Code liefert wirklich zufällige Zahlen:

Code: Alles auswählen

#include <stdio.h>

int main()
	{
	srand();
	int zahl_1;
	int zahl_2;
	int zahl_3;
	int var_1;

	zahl_1=rand()%10;
	zahl_2=rand()%10;
	zahl_3=rand()%10;

	printf("%i\n%i\n%i\n", zahl_1, zahl_2, zahl_3);
	return(0);
	}
Wenn ich nun allerdings noch eine Variable var_2 deklariere, kommen immer die selben Zahlen:

Code: Alles auswählen

#include <stdio.h>

int main()
	{
	srand();
	int zahl_1;
	int zahl_2;
	int zahl_3;
	int var_1;
	int var_2;

	zahl_1=rand()%10;
	zahl_2=rand()%10;
	zahl_3=rand()%10;

	printf("%i\n%i\n%i\n", zahl_1, zahl_2, zahl_3);
	return(0);
	}
Weiß jemand woran das liegt?

Danke!

Benutzeravatar
Columbus
Beiträge: 1051
Registriert: 30.04.2002 15:25:02
Wohnort: Mainz
Kontaktdaten:

Beitrag von Columbus » 09.08.2007 12:36:54

Hallo Lars,
Du musst srand auch eine sich ändernde Zahl zur Initialisierung geben, das kannst Du z.B. mit time() verwirklichen:

Code: Alles auswählen

srand(time(NULL));
printf("die Zufallszahl ist %i\n", zufallszahl=rand()%10+1);
probier mal

Gruss Christian
Die größten Kritiker der Elche,
waren früher selber welche.

F.W. Bernstein

Lars.
Beiträge: 14
Registriert: 02.08.2007 10:34:16

Beitrag von Lars. » 09.08.2007 12:52:29

Ok, danke, jetzt funktioniert es!

comes
Beiträge: 2702
Registriert: 11.03.2005 07:33:30
Wohnort: /dev/null
Kontaktdaten:

Beitrag von comes » 09.08.2007 13:32:23

für den erläuternden kontext

Damit der Zufallsgenerator nicht immer die gleichen Zahlen ermittelt, muss zunächst der Zufallsgenerator über srand(time(0)) mit der Systemzeit initialisiert werden (wenn Sie diese Bibliotheksfunktionen in ihrem Programm benutzen wollen, beachten Sie, dass Sie für die Funktion time(0) die Headerdatei <time.h> und für die Benutzung des Zufallsgenerators die Headerdatei <stdlib.h> einbinden müssen).
grüße, comes

Faschismus ist keine Meinung, sondern ein Verbrechen!
http://sourcewars.de

Antworten