Tome el siguiente programa:rand cambia de valor sin cambiar semilla
#include <cstdlib>
using std::rand;
#include <iostream>
using std::cout;
int main()
{
cout << rand() << ' ' << rand() << ' ' << rand() << '\n';
}
Debido a rand
la producción de los mismos valores, siempre que la semilla no se cambia utilizando srand
, esto debería producir tres números idénticos.
p.
567 567 567
Sin embargo, cuando ejecuto este programa, me da tres valores diferentes.
p.
6334 18467 41
Cuando se vuelve a compilar y ejecutar el programa, se generan los mismos tres números. ¿No debería tener que usar srand
para cambiar la semilla antes de comenzar a obtener resultados diferentes desde rand
? ¿Es esto solo mi compilador/implementación tratando de hacerme un favor?
SO: Windows XP
Compilador: GCC 4.6.2
Bibliotecas: MinGW
EDIT: al tratar de utilizar srand
, he descubierto que esto es el resultado de una semilla de 1 (lo que supongo se hace por defecto).
+1 para abreviar, complete el programa de ejemplo. +1 para mostrar lo que produce el programa. +1 para mostrar lo que espera que produzca. –
¿Está sugiriendo que el generador de números aleatorios tendría que ser sembrado antes de cada llamada al rand? Eso suena más como un número generado por el usuario que un número generado al azar. –
Si todas las apariencias de 'rand' en una función dieron el mismo resultado, no será de ninguna utilidad. – hjpotter92