Hallo,
welche möglichkeit habe ich, das die zahl sich selber ändert, ohne meine hilfe wie bei srand() ?????
du musst den seed-Wert fuer Deinen Zufallsgenerator (d. h.
der Wert, der in srand(...) gesteckt wird) "zufällig"
ermitteln. Eine Möglichkeit ist - wie bereits in diesem
Thread erwähnt - der Timer. Unter Linux kann man
auch das device /dev/urandom nutzen, welches einen
"Entropiepool" bestehend aus Timer, Tastendrücken,
Interrupts und in einigen Fällen auch Hardware-
Zufallsgeneratoren nutzt.
Ein Beispiel möge die Nutzung demonstrieren:
#include<stdio.h>
int main(void) {
int seed;
FILE *urandom;
if(urandom = fopen("/dev/urandom", "r")) {
fread(&seed, sizeof(int), 1, urandom);
seed &= 0x7fffffff; /* Nur positive Zahlen zulassen */
printf("Seed-Wert = %i\n", seed);
fclose(urandom);
} else {
puts("Konnte /dev/urandom nicht oeffnen\n");
exit(1);
}
return 0;
}
Man kann statt /dev/urandom auch /dev/random nutzen. Letzteres
soll einen "kryptographisch starken" Zufallsgenerator darstellen,
kann aber - im Gegensatz zu /dev/urandom - blockieren.
Beim Runterfahren von Linux wird der Zustand der "Zufallsgeräte"
zwischengespeichert, so bei jedem System-Neustart
eine andere Sequenz von Zufallszahlen erzeugt wird.
Viele Grüße
Andreas Pflug