Hace tiempo escribí sobre cómo usar vectores en C++ y como usar iteradores. Sin embargo, el otro día quise "revolver" (hacer un shuffle) a un vector y se me complicó un poquito encontrar la solución.
En Java existe Collections.shuffle y quería algo similar para un vector. Y, después de experimentar un rato y leer varias páginas, encontré que existe una función shuffle que recibe dos iteradores (del inicio y final del vector) y un motor de generador de números aleatorios. Aquí les dejo el ejemplo simple que hice:
/* *** * AzarVector.cpp - Ejemplo de cómo "revolver" un vector en C++ * ***/#include<vector> // Para usar el vector#include<iostream>#include<random> // Para el default_random_engine#include<algorithm> // Para el shuffleusingnamespacestd;intmain(){vector<int>lista;// Lleno la listacout<<"Llenando el vector con 100 enteros...\n";for(inti=0;i<100;i++){lista.push_back(i);}// Muestro la listacout<<"\nLos elementos dados de alta...\n";for(inti:lista){cout<<i<<endl;}// "Revuelvo" la listashuffle(lista.begin(),lista.end(),default_random_engine());// Muestro la listacout<<"\nLos elementos mezclados...\n";for(inti:lista){cout<<i<<endl;}}
Espero que esto les sirva en sus proyectos. ¡Saludos!
No hay comentarios.:
Publicar un comentario