Sobre los números aleatorios en C++

MacGyver
07 de Julio del 2002
Buenos días. Tengo una duda sobre la generación de números aleatorios en C++

Por lo que yo sé, hay un cierto número de lenguajes de programación (el BASIC es uno de ellos, por ejemplo), en los que al depender la generación de números aleatorios del temporizador interno del ordenador, es necesario poner una orden para inicializar esta relación, antes de disponerse a generar números aleatorios.

Creo que el C++ es uno de los lenguajes en los que esto ocurre. Así pues, mis preguntas concretas, son las siguientes.

1) ¿Es C++ uno de los lenguajes en los que hay que inicializar la relación con el temporizador antes de generar números aleatorios?

2) Si es así, ¿cuál es la orden para esta inicializacion?

3) Si no se inicializa, ¿ocurre como por ejemplo en GW-Basic, que siempre se obtenía la misma cadena de números?

4) Y por último, un detalle importante para mí. Si se pide a la función de números aleatorios que genere uno (entre 0 y 1, como hace por defecto) sin que se haya inicializado la relación con el temporizador previamente, ¿cuál es el número que da el C++? Este dato puede parecer irrelevante, pero para el problema que yo tengo, no lo es, así que si alguien me hiciese el favor de averiguarlo, se lo agradecería.

Gracias, y hasta pronto.

Emek
07 de Julio del 2002
Por lo que sé. En C++ al igual que en basic se requiere de la orden randomize() (debe inlcuirse la librería time.h pq la necesita) si no se inicializa dará el mismo conjunto de resultados en repetidas ejecuciones. Respeto a tu última pregunta, no lo sé. Ya que estamos en el tema, sabes en que librería están definidas las funciones aleatorias en Visual C++ 6.0 (en stdlib.h no las tengo), gracias

Kilio
07 de Julio del 2002
Para inicializar el generador, mejor utilizar la sentencia srand(time(NULL)), pues no todos los compiladores conocen la función randomize().