Andreas Pflug: C++ Random hilfe

Beitrag lesen

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