Est-ce que MSVCRT.dll utiliser un générateur de congruence linéaire, pour sa fonction rand ()?
Question
Je suis en train de prévoir la sortie d'un programme qui utilise la fonction rand msvcrt () pour générer le visage de trois dés. Je crois que le code est quelque chose comme:
dice[0] = rand() % 6 + 1; dice[1] = rand() % 6 + 1; dice[2] = rand() % 6 + 1;
, et je me demandais si je pouvais utiliser un programme de prédiction pour les générateurs de congruence linéaires pour prédire les prochains numéros dans la séquence.
La solution
Voyez vous-même: C:\Program Files\Microsoft Visual Studio 8\VC\crt\src\rand.c
(ou utilisez %VCINSTALLDIR%\crt\src\rand.c
si vous exécutez à partir d'une invite de commande VC).
(En supposant que vous avez au moins la version standard de VC. Il est deux lignes. Je posterai, mais pas sûr que la licence permet.)
Autres conseils
Si ma mémoire est bonne, oui il est un générateur de congruence linéaire - mais ce qu'il retourne est le reste d'une production plus importante, ce qui augmente la difficulté de prévoir le prochain numéro (au point que vous avez probablement besoin d'un échantillon beaucoup plus grand que trois sorties de le faire dependably).