Sleep / Pause mit C++ codieren
Verfasst: Mo Jul 25, 2022 3:27 pm
Da bin ich schon wieder.
Unser Dozent hat eher erfolglos versucht, spontan eine Pausen-Funktion in einen Programm zu benutzten. Auch bei meinem letzten Versuch war das Ergebnis nicht das erwartete.
Anlass ist eine simple Funktion gewesen, die Zufallszahlen erzeugt. Meine Version sieht so aus:
Damit man wirklich sieht, dass sich durch srand() verschiedene Zahlen ergeben, habe ich schnell ein Bash-Script geschrieben:
Das Ergebnis ist wie erwartet:
Der Dozent wollte das dann mit C++ machen, klappte auf die Schnelle nicht.
Ich habe dann unter anderem das Folgende ausprobiert:
Ergebnis nicht, was ich beabsichtigt habe.
Wie würde man in C++ solch eine Pause codieren, es geht ja darum, dass ich als "Saat", als Startwert für die Funktion rand() die Systemzeit benutzt habe und diese Zeit sich von einem zum anderen Aufruf geändert haben muss.
Unser Dozent hat eher erfolglos versucht, spontan eine Pausen-Funktion in einen Programm zu benutzten. Auch bei meinem letzten Versuch war das Ergebnis nicht das erwartete.
Anlass ist eine simple Funktion gewesen, die Zufallszahlen erzeugt. Meine Version sieht so aus:
Code: Alles auswählen
#include <iostream>
#include <ctime>
using namespace std;
int getRandom_10_100() {
time_t now;
srand((unsigned) time(&now));
return 10 + rand() % 90;
}
int getRandom(int lower, int upper) {
srand(time(nullptr));
return lower + rand() % (upper - lower);
}
int main() {
cout << getRandom_10_100() << " ";
}
Code: Alles auswählen
#! /bin/bash
for i in $(seq 160);
do
./zufall_03;
sleep 1;
done
echo
Code: Alles auswählen
…@bodhi-desktop:~/cplusplus/2022-07-25$ ./repeat
36 95 52 79 79 56 82 89 88 12 92 37 98 31 90 82 16 28 40 29 70 82 83 12 49 48 59 90 63 52 14 47 59 45 87 19 50 21 49 72 17 13 71 12 73 67 56 93 17 26 91 23 41 58 27 94 18 23 37 36 13 87 89 34 27 79 97 28 45 41 20 86 73 92 10 76 27 74 38 68 99 14 27 65 40 66 56 91 69 83 49 73 71 25 86 31 94 27 34 62 68 22 71 30 49 62 79 99 62 92 90 47 41 48 68 41 18 76 80 83 22 76 51 41 29 74 76 28 22 76 96 42 28 68 17 74 68 73 62 70 71 24 99 57 68 12 40 98 60 45 25 59 42 74 66 91 70 46 45 30
Ich habe dann unter anderem das Folgende ausprobiert:
Code: Alles auswählen
#include <iostream>
#include <ctime>
#include <chrono>
#include <thread>
using namespace std;
int getRandom_10_100() {
time_t now;
srand((unsigned) time(&now));
return 10 + rand() % 90;
}
int getRandom(int lower, int upper) {
std::chrono::milliseconds dura( 1000 );
std::this_thread::sleep_for( dura );
srand(time(nullptr));
return lower + rand() % (upper - lower);
}
int main() {
for (unsigned int i=0; i < 50; i++)
{
cout << getRandom_10_100() << " ";
}
}
Wie würde man in C++ solch eine Pause codieren, es geht ja darum, dass ich als "Saat", als Startwert für die Funktion rand() die Systemzeit benutzt habe und diese Zeit sich von einem zum anderen Aufruf geändert haben muss.