2010-02-22 3 views
8

Puis-je connaître le sens ou même comment lire ceci:srandom (time (NULL))

srandom(time(NULL))? 
+0

Vous initialisez une fonction random() avec une graine. Dans ce cas, la graine est l'heure actuelle. – tur1ng

+1

Cela pourrait signifier n'importe quoi, car il n'y a pas de fonction appelée "srandom" dans le langage C. (Je crois que c'est une fonction POSIX?) La fonction standard s'appelle 'srand'. – Lundin

Répondre

3

La signification est d'initialiser la graine aléatoire avec l'heure actuelle. time (NULL) renvoie l'heure actuelle. srandom() initialise la graine aléatoire.

3

srandom est une fonction qui initialise le générateur de nombres aléatoires.

Il prend une valeur de départ, qui dans ce code est time(NULL), ce qui est l'heure actuelle.

Ceci est lu, "srandom de temps de null".

22
NULL 

Un pointeur nul. Zéro. Points à rien.

time(NULL) 

La fonction time renvoie l'horodatage actuel comme un nombre entier. Il accepte un argument d'entrée. Si l'argument n'est pas nul, l'heure actuelle est stockée dans celui-ci. Le s signifie "graine". srandom signifie "ensemencer le générateur de nombres aléatoires". Il prend un nombre entier en entrée, réinitialise l'état interne PRNG dérivé par l'entrée pour générer une séquence de nombres aléatoires en fonction de lui. La graine est parfois utilisée pour s'assurer que 2 séquences de nombres aléatoires sont identiques, pour reproduire une condition de test équivalente.

En général, vous y mettez simplement une valeur toujours changeante pour éviter d'avoir la même séquence chaque fois que le programme est démarré. L'horodatage actuel est une bonne valeur, donc time(NULL) est utilisé comme entrée.

+0

L'intérêt de l'amorçage basé sur le temps dépend de l'application - bien que probablement seuls les types de sécurité seraient sérieusement désapprouvés, et ils n'utiliseraient pas les nombres aléatoires de la bibliothèque standard de toute façon. – Steve314

+0

time() renvoie toujours l'heure actuelle. Si l'argument n'est pas NULL, l'heure actuelle sera également stockée dans ce pointeur. Comme il est toujours retourné de toute façon, le formulaire de temps (NULL) est assez commun. Bonne explication si :) –