Comment puis-je obtenir le code source pour rand () (C ++)?
Je suis nouveau en programmation.
Je veux savoir exactement ce que rand ().
Recherche seulement donne des exemples sur son utilisation. Mais aucun d'expliquer chaque étape de la façon dont la fonction génère un nombre aléatoire. Ils traitent rand() comme blackbox.
Je veux savoir ce que rand() est en train de faire; chaque étape.
Est-il une ressource qui va me permettre de voir exactement ce que rand ()?
C'est tout ce qui est open-source n'est-ce pas? Je me contenterai pour le démontage, si il n'y a pas de source.
Je sais qu'il renvoie un nombre aléatoire, mais comment fait-il de générer un nombre? Je veux voir chaque étape.
Merci.
source d'informationauteur BBedit
Vous devez vous connecter pour publier un commentaire.
Ce est 10 secondes de recherche sur google:
...
J'allais liste de la recherche proprement dite, mais à voir c'est clairement une dupe, je vais voter comme dupe
Ici est l'actuelle mise en œuvre de la glibc:
Ce n'est pas beaucoup d'aide, mais
__random
appelle éventuellement__aléatoire_r
:Vous pouvez parcourir le code source pour les différentes implémentations de la norme.
La question a été répondue avant, vous pourriez trouver ce que vous cherchez au Quels algorithmes sont utilisés pour des C rand()?
Cette réponse fournit le code pour la glibc de la mise en œuvre de rand()
Je suppose, CETTE est ce que vous cherchez. Il contient une explication détaillée de la fonction random, et C très simple programme pour comprendre l'algo.
Edit:
Vous devriez vérifier CETTE. Un double possible.
Bien, je crois que rand est à partir de la bibliothèque standard C, pas du C++ standard library. Il n'existe pas de mise en œuvre de la bibliothèque, il y a plusieurs.
Vous pouvez aller quelque part, comme cette page pour afficher le code source de la glibc, la bibliothèque c utilisée sur la plupart des distributions Linux. Pour la glibc vous trouver dans les fichiers source en vertu de la stdlib comme
rand.c
etrandom.c
.Une mise en œuvre différente, comme uClibc pourrait être plus facile à lire. Essayer ici en vertu de la libc/stdlib dossier.
Le plus simple raisonnablement bon nombre pseudo-aléatoire générateurs sont Linéaire Des Générateurs À Congruence (LCGs). Ces sont des itérations d'une formule telle que
Les constantes a, c et m sont choisis pour donné imprévisible séquences. X_0 est la valeur de départ aléatoire. De nombreux autres algorithmes existent, mais c'est probablement suffisant pour vous allez.
Vraiment bon pseudo-générateurs de nombres aléatoires sont plus complexes, comme la Mersenne Twister.