在循环中向向量添加元素

时间:2013-11-23 20:52:41

标签: c++ vector

我遇到的问题是:

  vector<int> steps_list;
  steps_list.reserve(runs);

for (int i=0;i<runs;i++){
    int steps=0;
    bool in_con=false;
    srand(time(0));
    int init_pos=rand()%mylat;


    while (in_con==false) {

        srand(time(0));
        int step=2*(rand()%2)-1;

        init_pos+=step;

        init_pos=init_pos%grid.size();

        if (grid[init_pos]==0){

            in_con=true;
        }
        steps+=1;

    }

    steps_list.push_back(steps);

}



 for (int i=0;i<mylat;i++){
     cout<<steps_list[i]<<" ";
   }

我想在steps_list向量中存储所有不同的步骤,但不是只存储一步,而是用它填充向量。

我无法确定我的问题在哪里。我不熟悉矢量。

2 个答案:

答案 0 :(得分:2)

您需要移动此行

    srand(time(0));

在循环之外,最好在程序开始时执行一次。

您正在为随机数生成器播种,我的猜测是您获得分辨率的时间。循环迭代只需不到一秒钟,因此您总是使用相同的值播种并获得相同的随机数。

答案 1 :(得分:1)

我在猜测,但错误可能是您在srand(time(0))的每次调用之前致电rand()。这是让你的随机数完全非随机的非常好的方式。

这可能是你所看到的解释吗?

无论如何,在程序开始时调用srand(time(0))一次,而不是其他地方。