random_shuffle для вектора дает те же результаты, что и srand( time ( NULL)) в main.cpp
Я пытаюсь перемешать вектор целых чисел случайным образом, но каждый раз возвращается одна и та же последовательность. Я добавил srand(время (NULL)) в основной файл cpp, это ничего не делает. Я попытался добавить функцию srand в глобальное тело класса shuffleclass, это тоже не помогло.
Код:
//============================================================================
// Name : random_shuffle_example.cpp
// Author : Edwin Rietmeijer
// Version :
// Copyright : This code is owned by Edwin Rietmeijer as of 2014
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include <cstdlib>
#include <vector>
#include <ctime>
#include <algorithm>
#include "ShuffleClass.h"
using namespace std;
int main() {
srand( time ( NULL ) );
ShuffleClass * shuffleObject = new ShuffleClass;
shuffleObject -> shuffle();
shuffleObject -> toScreen();
return 0;
}
/*
* ShuffleClass.h
*
* Created on: Jan 20, 2014
* Author: edwinrietmeijer
*/
#ifndef SHUFFLECLASS_H_
#define SHUFFLECLASS_H_
#include <cstdlib>
#include <iostream>
#include <vector>
#include <ctime>
#include <algorithm>
class ShuffleClass {
private:
const static int numbersToShuffle[];
std::vector<int> myvector;
public:
ShuffleClass();
void shuffle();
void toScreen();
virtual ~ShuffleClass();
};
#endif
/*
* ShuffleClass.cpp
*
* Created on: Jan 20, 2014
* Author: edwinrietmeijer
*/
#include "ShuffleClass.h"
const int ShuffleClass::numbersToShuffle[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
ShuffleClass::ShuffleClass() {
for ( int i = 0; i < 10; i++ )
ShuffleClass::myvector.push_back( numbersToShuffle[ i ] );
// TODO Auto-generated constructor stub
}
void ShuffleClass::shuffle() {
std::random_shuffle( ShuffleClass::myvector.begin(), ShuffleClass::myvector.end() );
}
void ShuffleClass::toScreen() {
std::vector<int>::iterator pos;
for ( pos = myvector.begin(); pos != myvector.end(); ++pos )
std::cout << *pos << " ";
std::cout << std::endl;
}
ShuffleClass::~ShuffleClass() {
// TODO Auto-generated destructor stub
}