相关疑难解决方法(0)

如何确保std :: random_shuffle总是产生不同的结果?

是否有一些功能,类似于srand()我需要调用以确保std::random_shuffle()始终产生不同的结果?即如果我使用相同的数据多次调用它,我希望每次订单都不同.我怎样才能确定?

c++ random shuffle std

13
推荐指数
3
解决办法
6069
查看次数

C++ random_shuffle总是给出相同的结果

以下对随机shuffle的调用始终为向量v提供相同的结果

#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdlib>

using namespace std;

int main(){
  vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  srand(time(0));
  random_shuffle(v.begin(), v.end());
  for (int i = 0; i < v.size(); ++i) printf("%d ", v[i]); printf("\n");
  printf("%d\n", rand() % 100);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我试过编译使用

g++ -std=c++0x
g++ -std=c++11
Run Code Online (Sandbox Code Playgroud)

但是每次都给出相同的结果,所以我真的不明白发生了什么.

$./a.out
7 1 4 6 8 9 5 2 3 10 
26
$ ./a.out
7 1 4 6 8 9 5 2 3 10 …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

1
推荐指数
1
解决办法
518
查看次数

标签 统计

c++ ×2

c++11 ×1

random ×1

shuffle ×1

std ×1