Est-ce que C ++ est moderne pour utiliser srand pour définir des semences aléatoires?
Pour le code qui utilise std::random_shuffle
j'ai besoin de définir une valeur aléatoire de sorte que les séquences pseudo-aléatoires produites varient dans chaque programme.
La exemple de code ici fait un appel à
srand ( unsigned ( time (NULL) ) );
qui doit
#include <ctime>
#include <cstdlib>
Je me demande: Depuis C++11 comprend des mises à jour majeures de nombre pseudo-aléatoire de la génération, est-ce toujours d'actualité? Que dois-je utiliser pour définir la valeur de départ aléatoire pour std::random_shuffle
?
source d'informationauteur clstaudt
Vous devez vous connecter pour publier un commentaire.
random_shuffle
utilise une mise en œuvre définies générateur de nombre aléatoire, sauf si vous en avez un. Donc, non, l'utilisation desrand
n'est pas nécessairement correcte.Sinon, il utilise le générateur de vous fournir. Vous pouvez utiliser
rand
si vous voulez être certain que c'est ce qui est utilisé.Cependant, je vous recommande d'utiliser la nouvelle
<random>
installations au lieu de rand(). L'exemple qui suit.Si vous êtes à l'aide de C++11, pensez à utiliser
std::shuffle
au lieu destd::random_shuffle
et le passage d'un générateur de nombres aléatoires, comme dans le dernier exemple iciSi vous vous souciez vraiment de la précision, de la qualité et de la diversité des façons de générer des nombres aléatoires, je vous suggère fortement d'envisager l'utilisation de la célèbre
Gnu Scientific Library
(GSL)Cela permet à de véritables uniformes de la génération et de divers algorithmes pour le mieux. Voir ici.
Spécialement cette et cette décrit les algorithmes disponibles :
EDIT : Aussi boost::aléatoire devrait être une bonne alternative compte tenu de la GPLness de GSL (mais je n'ai jamais thématiques...).