在C++中的随机向量

4 c++ shuffle vector

我有一个std :: vector,我需要随机播放.它只有大约20名成员.每次运行程序时,它还需要产生不同的shuffle.

现在我正在使用random_shuffle,但是每次运行程序时它都会给出相同的结果.我试过srand(unsigned(time(NULL)));这个帖子中提出的,但是,这在我的平台上不起作用.

如果可能,我想只使用标准代码.

编辑:这是我的实现:

vector<Tile>gameTiles;
gameTiles.push_back(Tile(0,0));
gameTiles.push_back(Tile(0,1));
gameTiles.push_back(Tile(0,2));
gameTiles.push_back(Tile(0,3));
gameTiles.push_back(Tile(0,4));
//etc. ~20 member

random_shuffle(gameTiles.begin(), gameTiles.end());
Run Code Online (Sandbox Code Playgroud)

Ben*_*ley 10

如果srand(unsigned(time(NULL)));没有帮助,那么您的实现不能使用标准rand()作为其随机数生成器.在这种情况下,有一个替代版本random_shuffle采用自定义随机数生成器.你可以传递一个包装器rand(),如下所示:

int MyRand(int n)
{
    return std::rand() % n;
}

// ...
std::random_shuffle(bar.begin(), bar.end(), MyRand);
// ...
Run Code Online (Sandbox Code Playgroud)

如果你想要一个分布更均匀的东西,请查看C++ 11 <random>标题.