2010-02-22 20 views
8

se puede saber el significado o incluso la forma de leer esto:srandom (time (NULL))

srandom(time(NULL))? 
+0

inicializar una función aleatoria() con una semilla. En este caso, la semilla es la hora actual. – tur1ng

+1

Podría decir nada, ya que no hay una función llamada "srandom" en el lenguaje C. (¿Creo que es una función POSIX?) La función estándar se llama 'srand'. – Lundin

Respuesta

3

El significado es inicializar la semilla aleatoria con la hora actual. time (NULL) devuelve la hora actual. srandom() inicializa la semilla aleatoria.

3

srandom es una función que inicializa el generador de números aleatorios.

Se necesita un valor de semilla, que en este código es time(NULL), que es la hora actual.

Esto se lee, "srandom de tiempo de nula".

22
NULL 

Un puntero nulo. Cero. Apunta a nada

time(NULL) 

La función time devuelve la fecha y hora actual como un entero. Acepta un argumento de entrada. Si el argumento no es nulo, la hora actual se almacena en él.

srandom(time(NULL)) 

El s significa "semilla". srandom significa "sembrar el generador de números aleatorios". Toma un entero como entrada, restablece el estado interno del PRNG derivado por la entrada para generar una secuencia de números aleatorios de acuerdo con él. La semilla a veces se usa para asegurar que 2 secuencias de números aleatorios sean iguales, para reproducir una condición de prueba equivalente.

En general, sólo hay que poner algún valor siempre cambiando allí para evitar que la misma secuencia cada vez que se inicia el programa. La marca de tiempo actual es un buen valor, por lo time(NULL) se utiliza como la entrada.

+0

Si la siembra basada en el tiempo es una buena idea depende de la aplicación, aunque probablemente solo los tipos de seguridad lo desaprobarían seriamente, y supongo que no usarían números aleatorios de biblioteca estándar. – Steve314

+0

time() siempre devuelve la hora actual. Si el argumento no es NULO, la hora actual también se almacenará en ese puntero. Dado que siempre se devuelve de todos modos, la forma de tiempo (NULL) es bastante común. Buena explicación sin embargo :) –