variable randomize number how generate dev c++ random vector srand

c++ - randomize - srand php



std:: random_shuffle produce el mismo resultado aunque srand(time(0)) llamó una vez (1)

random_shuffle() no está especificado para usar rand() y entonces srand() puede no tener ningún impacto. Si quiere estar seguro, debe usar uno de los formularios C ++ 11, random_shuffle(b, e, RNG) o shuffle(b, e, uRNG) .

Una alternativa sería usar random_shuffle(indices.begin(), indices.end(), rand()); porque aparentemente su implementación de random_shuffle() no está usando rand() .

En una función, quiero generar una lista de números dentro del rango: (Esta función se ejecutará solo una vez cuando se ejecute el programa).

void DataSet::finalize(double trainPercent, bool genValidData) { srand(time(0)); printf("%d/n", rand()); // indices = {0, 1, 2, 3, 4, ..., m_train.size()-1} vector<size_t> indices(m_train.size()); for (size_t i = 0; i < indices.size(); i++) indices[i] = i; random_shuffle(indices.begin(), indices.end()); // Output for (size_t i = 0; i < 10; i++) printf("%ld ", indices[i]); puts(""); }

Los resultados son como:

850577673 246 239 7 102 41 201 288 23 1 237

Después de unos segundos:

856981140 246 239 7 102 41 201 288 23 1 237

Y más:

857552578 246 239 7 102 41 201 288 23 1 237

¿Por qué la función rand() funciona correctamente pero `random_shuffle ''no funciona?