Comment puis-je générer des nombres aléatoires différents à l'exécution?
J'ai essayé p> mais il semble me faire un nombre aléatoire à chaque démarrage du programme , mais pas sur chaque exécution de la fonction elle-même ... p> J'essaie d'automatiser quelques tests avec des nombres aléatoires, des itérations aléatoires, un nombre d'éléments, etc., je pensais que je pouvais juste appeler < / p> au début de ma fonction de test et de ma bingo, mais apparemment pas. p> Que voudriez-vous me suggérer de faire? P> P> P> P> P> P> P> P> P> P> >
3 Réponses :
Vous devez appeler SRAND une fois par exécution de programme. Calling Rand met à jour l'état interne du générateur de nombres aléatoires, alors appeler Srand réinitialise à nouveau l'état aléatoire. Si moins d'une seconde est passée, le temps sera le même et vous obtiendrez le même flux de nombres aléatoires. P>
Oui, c'est un hack. Mais c'est un hack avec une interface très bien documentée. P> SRAND code> est utilisé pour semer le générateur de nombres aléatoires. Le 's' signifie "graine". Cela s'appelle "ensemencement" parce que vous ne le faites qu'une fois: une fois qu'il est "planté", vous avez un flux à partir duquel vous pouvez appeler
rand code> autant de fois que nécessaire. N'appelez pas
srand code> au début de la fonction qui nécessite des nombres aléatoires. Appelez-le au début
Comme d'autres ont mentionné. SRAND () GRAINES Le générateur de nombres aléatoires. Cela signifie fondamentalement qu'il définit le point de départ de la séquence de nombres aléatoires. Par conséquent, dans une demande réelle, vous voulez l'appeler une fois (généralement la première chose que vous faites dans la principale (juste après la définition des paramètres régionaux)). P>
int main() { srand(time(0)); // STUFF }
York Les tests que je fais avec ce n'est pas des tests unitaires vraiment ... c'est juste un test d'étranglement comme une information sur la manière de traiter généralement une vue d'ensemble ...