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
}

0 ответов

Другие вопросы по тегам