Estaba haciendo un programa en el que iba a generar unos números aleatorios pero se me ha olvidado incluir tanto la librería <cstdlib> como la función <srand> es decir que únicamente he usado la función <rand> sin más... Y el programa ha funcionado.
Me he puesto a hacer pruebas y os dejo los resultados (compilado desde Ubuntu 18.04 con g++ <programa.cpp> -o <programa>):
Código
#include <iostream> #include <list> using namespace std; int main(){ const int MAX_ELEMENTS = 10; const int LIMIT_INF = 0, LIMIT_SUP = 5; list<int> myList; for(size_t i = 0; i < MAX_ELEMENTS; i++) myList.push_back(LIMIT_INF + rand() % (LIMIT_SUP - LIMIT_INF + 1)); for(auto it = myList.cbegin(); it != myList.cend(); it++) cout << *it << " "; cout << endl; }
Con este código compila el programa sin errores ni warnings pero sí es cierto que los números son siempre los mismos (lógico por no usar srand).
Entonces he probado a incluir la semilla sin nada más, es decir, como se ve aquí:
Código
Y ahora tengo un programa que compila sin errores ni warnings y que genera los números aleatorios distintos cada vez que se ejecuta el programa (sin compilarlo antes de cada ejecución).
#include <iostream> #include <list> using namespace std; int main(){ const int MAX_ELEMENTS = 10; const int LIMIT_INF = 0, LIMIT_SUP = 5; list<int> myList; srand(time(NULL)); for(size_t i = 0; i < MAX_ELEMENTS; i++) myList.push_back(LIMIT_INF + rand() % (LIMIT_SUP - LIMIT_INF + 1)); for(auto it = myList.cbegin(); it != myList.cend(); it++) cout << *it << " "; cout << endl; }
También si os dais cuenta tampoco he incluido <ctime> para usar la función <time()>.
He estado investigando <iostream> por si incluía <cstdlib> pero no he encontrado nada. Lo de usar <list> es simplemente porque era lo que estaba usando cuando me he dado cuenta de esto y no he querido quitarlo por si tenía algo que ver con la respuesta aunque tampoco he encontrado nada al respecto.