Zufallsdaten aktualisieren sich zu langsam!

Dieses Thema im Forum "C/C++" wurde erstellt von beelzebub, 26.12.2003.

  1. #1 beelzebub, 26.12.2003
    beelzebub

    beelzebub Jungspund

    Dabei seit:
    13.11.2003
    Beiträge:
    19
    Zustimmungen:
    0
    /*********************************************
    * *
    * Zufallszahlengenerator *
    * *
    *********************************************/

    define rand() (z=z*z*z*z*z*1103515245+12345, z&0x7fff)
    #define srand(s) z=s

    unsigned long int z=1;

    unsigned long int random(unsigned long int von,unsigned long int bis){

    unsigned long int zahl;
    srand(time(NULL));
    zahl=rand()%bis+von;

    return zahl;
    }
    //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    //Dieser Zufallsdatenerzeuger aktualisiert sich nur 1x in der sec., zu langsam für ein Programm, dass sehr viele Zufallszahlen erzeugen muss. liegt an time(); gibt's da eine bessere Funktion?
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. thorus

    thorus GNU-Freiheitskämpfer

    Dabei seit:
    03.11.2002
    Beiträge:
    757
    Zustimmungen:
    0
    Ort:
    Passau, Niederbayern
    man 2 time gibt:
    Code:
    NAME
           time - get time in seconds
    also insofern is das logisch mit den zufallszahlengenerator.

    Leider steht das was du brauchst nicht bei den references zu time.
    Was du brauchst is clock():
    Code:
    NAME
           clock - Determine processor time
    
    DESCRIPTION
           The clock() function returns an approximation of processor time used by
           the program.
    Das gibt dann eine sehr kleine zahl bzw. eine sehr große ;)
    siehe man clock
     
  4. #3 beelzebub, 27.12.2003
    beelzebub

    beelzebub Jungspund

    Dabei seit:
    13.11.2003
    Beiträge:
    19
    Zustimmungen:
    0
    Ich hab jetzt auch noch gelesen, dass es unter Linux /dev/urandom gibt, gibt's dass unter den anderen Unixes auch, wie z. B. FreeBSD??
     
  5. thorus

    thorus GNU-Freiheitskämpfer

    Dabei seit:
    03.11.2002
    Beiträge:
    757
    Zustimmungen:
    0
    Ort:
    Passau, Niederbayern
    Jop, das kannst du auch nehmen, einfach ganz normal öffnen uns auslesen.
    urandom gibts nich bei alles Unixes, je nachdem ob random kontinuierlich Zufallszeichen ausgibt. Wenn nicht gibts urandom. random gibt dann nur bei Ereigniss Zufallsdaten aus (z.B. Interrupts -> Tastatur, Maus etc.)
     
  6. #5 beelzebub, 27.12.2003
    beelzebub

    beelzebub Jungspund

    Dabei seit:
    13.11.2003
    Beiträge:
    19
    Zustimmungen:
    0
    ich hab's jetzt anders gelöst, und zwar srand(time(NULL)*random())

    random() ist unter stdlib.h zu finden, und generiert einen schneller aktualisierenden Zufallswert. Jedoch scheint sich der irgendwie an der Zeit, die seit dem Start des Programms vergangen ist zu orientieren
    -> immer die gleichen, deswegen vermischen mit time()
     
  7. rup

    rup Haudegen

    Dabei seit:
    10.04.2002
    Beiträge:
    627
    Zustimmungen:
    0
    z.B. so

    Code:
    #include<iostream> // fuer cout 
    #include<time.h>   // fuer time 
    #include<stdlib.h> // fuer srand 
     
    using namespace std; 
    
    int main(){
    	srand((unsigned)time(NULL)); 
    	while(1){
     		cout << "Zahl zwischen 1 und 49: " << 1+(rand()%49) << endl; 
    	}
    	exit(0); 
    }
    
     
  8. rup

    rup Haudegen

    Dabei seit:
    10.04.2002
    Beiträge:
    627
    Zustimmungen:
    0
    Den Startwert kann man auch ueber andere Zufallswerte bestimmen, z.B. PID, Mauszeiger Position ... oder einer Summe aus den Werten.
    Code:
    ...
    #include<unistd.h> // fuer getpid
    ...
    srand((unsigned)time(NULL) + getpid());
    ...
    
     
  9. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  10. thorus

    thorus GNU-Freiheitskämpfer

    Dabei seit:
    03.11.2002
    Beiträge:
    757
    Zustimmungen:
    0
    Ort:
    Passau, Niederbayern
    Kleiner Tipp: Für random() gibts auch srandrom() ;)
    Dann kanns ja nur besser werden, wenn du beide kombinierst :D
     
  11. #9 beelzebub, 28.12.2003
    beelzebub

    beelzebub Jungspund

    Dabei seit:
    13.11.2003
    Beiträge:
    19
    Zustimmungen:
    0
    Ich glaub jetzt ist alles mögliche drin, und hab total zufällige Daten. Super!
     
Thema:

Zufallsdaten aktualisieren sich zu langsam!

Die Seite wird geladen...

Zufallsdaten aktualisieren sich zu langsam! - Ähnliche Themen

  1. Zufallsdaten erzeugen

    Zufallsdaten erzeugen: Hallo, ich möchte in C einen String mit Zufallsdaten befüllen. Zufallsdaten sollen dabei alles sein: Zahlen Buchstaben, Steuerzeichen, usw....
  2. Mozilla will MPL aktualisieren

    Mozilla will MPL aktualisieren: Die Mozilla Foundation hat eine Initiative zur Aktualisierung der Mozilla Public License (MPL) gestartet und plant, bis Ende des Jahres eine neue...
  3. [PHP] Tabellen dynamisch aktualisieren/nachladen mittels AJAX

    [PHP] Tabellen dynamisch aktualisieren/nachladen mittels AJAX: Hallo! Ich arbeite derzeit an einem in PHP realisiertem Web-Projekt. Ich würde gerne mittels AJAX eine Ausgabetablle (enthält Daten einer MySQL...
  4. irmp3 prob beim löschen oder Aktualisieren

    irmp3 prob beim löschen oder Aktualisieren: Hallo an alle!:) Dies ist mein erster Forumeintrag überhaupt. Und hoffe das mir jemand helfen kann. Habe folgendes Problem mit irmp3 unter...
  5. Yast aktualisieren??

    Yast aktualisieren??: Hallo Leutz Kann man Yast in Yast aktualisieren (wenn eine neuere Version in den Repos vorkommt)?? Weil ich ja viel gelesen habe dass das neue...