【发布时间】:2013-12-21 08:44:49
【问题描述】:
这里的 C++ 问题,使用 Code::Blocks。 我正在尝试运行此代码来测试伪随机函数
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
int count = 0;
while (count < 10){
srand(time(NULL));
cout << rand() << ' ';
cout << (time( NULL )) << " \n";
count++;
}
return 0;
}
由此产生的输出是 10 条相等的行。这不是真正的问题,因为这里的种子是一样的,所以结果应该是一样的。问题是,如果我再次运行这个程序,它会给出 10 条非常相似的行,不仅在 time() 输出上,而且在 rand 输出上也几乎没有变化。
srand(time(NULL)) 给出的答案非常相似,返回值基本相同,只是稍大一些。
(第一次运行返回 9631,第二次返回 9656)。
我的问题是,这是预期的行为吗?我怎样才能得到更多不同的结果,比如第一次运行 38,第二次运行 671?
【问题讨论】:
-
你能说得更准确点吗?你期望看到什么?你看到了什么?这怎么不符合您的期望?
标签: c++ random time seed srand