Random每次都返回相同的输出

R11*_*11G 2 c++ random vector

我写了这个代码,它工作正常,但每次输出都是一样的.所以没有随意的.很想知道为什么!假设:33名学生第一排:7名学生第2排:9名学生第3排:9名学生第4排:8名学生

#include <iostream>
#include <vector>
#include <algorithm>
#include <ctime>
using namespace std;

int main() {
   vector<int> random;

   for (int i = 1; i < 34; i++)
      random.push_back(i);

   random_shuffle(random.begin(), random.end());

   for (int i = 1; i < 8; i++)
      cout << random[i] << " " ;
   cout << endl;

   int i = 7;
   int num_seats = 1;

   for (int j = 1; j <=3; j++) {
      while (num_seats < 10 && i < 33) {
         cout << random[i++] << " " ;
         num_seats++;
      }
      cout << endl;
      num_seats = 1;
   }
}
Run Code Online (Sandbox Code Playgroud)

Ult*_*nct 8

您需要首先初始化随机数生成器.随机数生成取决于"种子值".要在每次执行程序时获得唯一的种子值,您可以依赖当前时间.time(NULL)返回表示当前时间的秒数 - 可以是唯一的种子.

尝试在第一行里面添加它 main()

srand(unsigned(time(NULL)));
Run Code Online (Sandbox Code Playgroud)