Siembra de un generador de números aleatorios C ++ [duplicado]

Esta pregunta ya tiene una respuesta aquí:

¿Cómo generar un número aleatorio en C ++? 10 respuestas

Tengo dos preguntas.

¿Qué otras formas hay para sembrar un generador de números pseudoaleatorios en C ++ sin usarsrand(time(NULL))?

La razón por la que hice la primera pregunta. Actualmente estoy usando el tiempo como mi semilla para mi generador, pero el número que devuelve el generador es siempre el mismo. Estoy bastante seguro de que la razón es porque la variable que almacena el tiempo se está truncando en cierta medida. (Tengo un mensaje de advertencia que dice: "La conversión implícita pierde precisión de entero: 'time_t' (también conocido como 'long') a 'unsigned int') Supongo que esto me dice que, en esencia, mi semilla no cambiará hasta el próximo año. Para mis propósitos, usar el tiempo como mi semilla funcionaría bien, pero no sé cómo deshacerme de esta advertencia.

Nunca antes había recibido ese mensaje de error, así que asumo que tiene algo que ver con mi Mac. Es OS X v10.8 de 64 bits. También estoy usando Xcode para escribir y compilar, pero no tuve problemas en otras computadoras con Xcode.

Edición: Después de jugar e investigar esto más, descubrí un error que tienen las Mac de 64 bits. (Por favor, corríjame si me equivoco). Si intenta que su mac seleccione un número aleatorio entre 1 y 7 usandotime(NULL) Como semilla, siempre obtendrás el número cuatro. Siempre. Terminé usandomach_absolute_time() para sembrar mi aleatorizador. Obviamente, esto elimina toda la portabilidad de mi programa ... pero solo soy un aficionado.

Edit2: Código fuente:

#include <iostream>
#include <time.h>

using namespace std;

int main(int argc, const char * argv[]) {

srand(time(NULL));

cout << rand() % 7 + 1;

return 0;
}

Corrí este código otra vez para probarlo. Ahora solo devuelve 3. Esto debe ser algo que ver con mi computadora y no con el C ++ en sí.

Respuestas a la pregunta(2)

Su respuesta a la pregunta