变量在第一次执行后始终相同
Variables always the same after first execution?
我正在将一个python脚本移植到C++,它调用一个函数一千多次。我从来没有用C++编程过,所以我不确定发生了什么,也找不出更好的标题来回答这个问题。
这不是我的实际功能,但它再现了相同的错误
int maior_sequencia()
{
int random;
srand(time(NULL));
int maior_sequencia = rand() % 6+1;
printf("%i", maior_sequencia);
return 1;
}
int main()
{
for(int i = 1; i<=100; i++)
{
maior_sequencia();
}
return 1;
}
如果maior_sequencia((的第一个结果是3,那么它将输出3333333。。。如果我再次运行程序,第一个结果是5,它将输出555555…
为什么会发生这种情况?
int maior_sequencia()
{
int random;
srand(time(NULL));
//^^This will reset random seed every time you call this function
int maior_sequencia = rand() % 6+1;
printf("%i", maior_sequencia);
return 1;
}
由于每次调用maior_sequencia
函数时都会重置随机种子,因此,它将为您提供相同的值。
尝试放置
srand(time(NULL));
而是在for循环之前的CCD_ 2内部。
问题有两个方面。首先是你对时间的使用。当你使用time((为随机数生成器播种时,time是1973年某个日期的秒数,我忘记了确切的日期,但它被称为linux时间。由于你每次都在播种,你正在重置随机数生成器,这是一个很好的做法,然而,由于你用几秒钟内返回一个数字的东西来播种,你的程序可能只需要不到一秒钟的时间就可以运行。要么按照别人的建议去做,只给随机数生成器种子一次,要么用更精细的粒度种子。。。ms可能是可以接受的。
相关文章:
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- C++如何在多次执行后记住过去给出的输入
- 我必须构建我的项目 2 次,第一次失败,因为它无法打开库
- 是什么导致我的循环在第一次迭代中运行得更慢
- QLibrary 函数在第一次调用时工作缓慢
- 第一次尝试使用new动态创建结构数组,程序挂起没有错误
- 为什么第一次迭代后的指针指向随机值?
- 如何防止GUI挂起,同时允许第二次操作与Qt中的第一次操作一起执行
- LAPACK函数在第一次迭代后变慢
- 为什么 Boost unordered_map 在第一次插入时需要太多时间?
- 为什么我的 cout 一次执行,尽管 cin 应该在两者之间读取?
- cl 生成的可执行文件在第一次运行时运行速度非常慢
- 第一次在 Linux 上执行 c++ 代码的时间非常慢
- 第一次执行后我的while循环周围出现错误,不再要求输入
- Visual C++Express.exe在第一次执行之后再次运行
- 如何在递归模板函数的第一次调用时执行函数
- Fencepost问题:我需要一个递归函数,当它第一次被调用时,它会跳过执行一个部分
- Cin未能在循环的第一次迭代后执行
- 变量在第一次执行后始终相同
- 递归呼吸优先搜索适用于第一次执行,但不适用于随后的执行