Remplissez un vecteur avec des nombres aléatoires c ++
J'ai un vecteur que je suis en train de remplir avec des nombres aléatoires. - Je continuer à courir dans un problème, cependant, que les vecteur pour la plupart des sorties 0 à chaque fois que je suis à court (il ne devrait pas sortie 0 jamais). Ce que j'ai fait une erreur dans mon code ci-dessous pour faire une sortie 0 (sorties de 0, plus que n'importe quel autre numéro):
vector<int> myVector;
srand((unsigned)time(NULL));
int a = rand() % 20 + 1; //1 to 20
for (int i =0; i < a; i++){
int b = rand() % 20 + 1;
myVector.push_back(b);
cout << myVector[b] << endl;
}
Je suis un débutant et n'ai pas fait beaucoup de programmation C++ dans un temps long, donc je ne suis pas sûr de ce qui est fait de mon code de dysfonctionnement. Si quelqu'un peut expliquer ce que j'ai fait de mal, il serait grandement apprécié.
source d'informationauteur Valrok | 2014-02-02
Vous devez vous connecter pour publier un commentaire.
Vous appelez le mauvais index dans votre vecteur
Essayer de faire:
sinon vous risquez de manquer la fin de votre vertex pour les 20 premières itérations.
Vous pouvez également appeler .back() sur votre vecteur pour obtenir le dernier élément du vecteur.
Vous pouvez utiliser std::générer de l'algorithme de remplir un vecteur de n éléments avec des nombres aléatoires.
En C++ moderne, il est recommandé de ne pas utiliser tout le temps à base de graines et de std::rand, mais au lieu d'utiliser random_device pour générer une graine. Pour un logiciel basé sur le moteur, vous devez toujours spécifier le moteur et la distribution. Lire Plus..
Si vous voulez réorganiser les éléments d'une plage dans un ordre aléatoire:
Juste ajouter mes 2 cents... Cette réponse est similaire à celui donné par Marko Tunjicmais il n'utilise pas
std::rand
à partir de C, mais le C++11 caractéristiques de la place.Il vous permet d'utiliser la distribution de votre choix,
uniform_int_distribution
dans l'exemple ci-dessous.Vous appelez le mauvais index dans votre vecteur
Il n'est pas clair ce que vous essayez de faire avec la boucle, le code est la création d'un vecteur aléatoire de taille, rempli avec des nombres aléatoires.
Sortie "myVector[b]", mais " b " est la valeur aléatoire, pas l'indice de venez d'ajouter le numéro. Vous pourriez tout simplement :
Mais vraiment, vous devriez la taille du vecteur, et simplement l'accès par index.
Qu'en est simple:
il devrait être :
cout << myVector[i];