相关疑难解决方法(0)

C++随机数

如下:http://www.fredosaurus.com/notes-cpp/misc/random.html

它提到如果我们想在该范围内生成随机数1-10,我们可以执行以下操作:

r = (rand() % 10) + 1;

我们为什么要添加1?你能解释一下这个过程是如何运作的吗?

并且,关于初始化随机数生成器,它提到了执行以下操作:

srand(time(0));

你能解释一下这个过程吗?而且,如果我们根本没有初始化会发生什么?

谢谢.

c++ random

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

c ++矢量性能非直观的结果?

我正在摆弄VS2010中的性能向导,即测试仪器(函数调用次数和时序).

在了解了C++ STL中的向量之后,我决定看看有关填充100万个整数向量的性能的信息:

#include <iostream>
#include <vector>

void generate_ints();

int main() {
  generate_ints();
  return 0;
}

void generate_ints() {
  typedef std::vector<int> Generator;
  typedef std::vector<int>::iterator iter;
  typedef std::vector<int>::size_type size;

  Generator generator;

  for (size i = 0; i != 1000000; ++i) {
    generator.push_back(i);
  }
}
Run Code Online (Sandbox Code Playgroud)

我得到的是:上述2402.37毫秒的经过时间.但我了解到,当向量耗尽时,向量必须调整自身大小,因为它们在内存中是连续的.因此,我认为通过对上述内容进行一次添加可以获得更好的性能:

generate.reserve(1000000);
Run Code Online (Sandbox Code Playgroud)

然而,这使程序的执行时间加倍到大约5000毫秒.这是函数调用的屏幕截图,左侧没有上面的代码行,右侧有.我真的不明白这个结果,如果你知道如果用一个吨来填充它,我学到了如何定义矢量容量对我来说没有意义是一件好事.指定保留基本上使大多数函数调用加倍.

http://imagebin.org/179302

c++ performance visual-studio-2010

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

标签 统计

c++ ×2

performance ×1

random ×1

visual-studio-2010 ×1