我需要一个介于0.0和1.0之间的值。所以我使用时间播种随机数生成器。然后我使用rand函数得到0到10之间的值。之后,我取该值并除以10得到我的小数值。我的问题是,当我尝试打印出(dRandNum%10)生成的值时,程序会随机崩溃。另外值得注意的是,它不会在for循环中间崩溃。在第一次尝试打印时,它始终是正确的。老实说,我觉得编译器有一些非常奇怪的东西,并且想知道是否有人可以指导我。
double dRandNum = 0;
int tempRand = 0;
/* initialize random seed: */
srand ( (unsigned)time(0) );
for(int i = 0; i < 40; i++)
{
tempRand = rand();
cout << "tempRand= " << tempRand << endl;
dRandNum = tempRand % 10;// + 1;
// Crashes here for some reason. If I don't try and print the value it's fine
cout << "Random Num Before " << i << ": " << dRandNum << endl;
dRandNum = dRandNum / 10;
cout << "Random Num After " << i << ": " << dRandNum << endl;
weights[i] = dRandNum;
}
答案 0 :(得分:3)
好的,我将在这里随机捅一下,并要求你向我们展示权重[]数组的声明。
我甚至打赌传统的虚拟果冻甜甜圈,重量[]未被宣布为容纳40个元素。
答案 1 :(得分:2)
为了程序,我们可以假设该功能是完全独立的
这是一个很大的错误,它从来都不是。这会在其上写入堆损坏。这很少会导致代码行崩溃,从而破坏堆。总是晚些时候,有时候晚了。