Ich arbeite in C und ich versuche (verzweifelt), einen Zufallsgenerator zu erzeugen, der nicht nur eine andere Zahl generiert, jedes Mal wenn ich den Generator aber auch eine andere Reihenfolge jedes Mal i Führen Sie das Programm aus. Ich habe fast alles getestet, was ich online gefunden habe. Ich habe 2 gute Möglichkeiten gefunden, einen guten Zufallsgenerator zu erstellen. Die erste ist, jedes Mal einen anderen Samen zu verwenden. Das bedeutet, dass ich jedes Mal einen anderen Zufallssamen verwenden muss, eine Sache, die ich zuerst nicht gelöst habe. Hier ist, was ich jetzt versuche, aber es ist nicht wirklich zufällig, wie ich will:Ich suche einen voll-zufälligen Zahlengenerator
int myrand(int random_seed){
random_seed = random_seed * 1103515245 +12345;
return (unsigned int)(random_seed/65536) % 32768;
}
Jedes Mal, wenn ich die Funktion aufrufen, erhöhe ich die Samen von 1.
Der zweite Weg time.time Änderungen zu verwenden ist, und dies ist randomness.I auch viele Möglichkeiten ausprobiert um dies zu implementieren.Mein letzter Versuch ist hier: Compiler error-Possible IDE error"undefined reference to gettimeofday error" aber ich konnte nicht die Funktion gettimeofday verwenden, weil ich in Windows arbeite.Auch in dieser Frage habe ich keine Antworten erhalten.
Könnte jemand mir helfen, wie ich einen Zufallsgenerator (wahrscheinlich mit Zeit) in C arbeiten in Windows oder könnte ich Unix verwenden?
Stimmt etwas nicht mit 'srand()'? Du kannst es wie folgt säen: 'srand (time (NULL));' –
Ich habe auch srand versucht (time (NULL)), aber ich musste Verzögerungen machen, um die Zeit zu warten, um den Grund zu ändern Ich möchte eine große Menge von Zufallszahlen in einmal generieren und ich möchte nicht warten 2 Minuten für das Programm, um sie zu generieren.Ich habe auch versucht, Millisekunden zu verwenden, aber ohne Erfolg.Vielleicht Millisekunden ist die Antwort, aber ich konnte nicht implementieren Sie es richtig, wieder war das Problem, dass ich Windows verwende. – Dchris
@Dchris: seed Ihren Pseudo-Zufallszahlengenerator (PRNG) mit der Zeit * einmal *, am Anfang des Programms. Dann müssen Sie vielleicht sicherstellen, dass Sie Ihr Programm nicht mehr als einmal pro Sekunde ausführen (und die Einführung von Millisekunden würde dabei helfen), aber Sie müssen nicht jedes Mal eine Sekunde warten, wenn Sie eine Zahl von Ihrem PRNG lesen. –