C ++随机数仅在打印输出值时导致崩溃。很奇怪

时间:2011-05-08 18:12:55

标签: c++ random crash

我需要一个介于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;
} 

2 个答案:

答案 0 :(得分:3)

好的,我将在这里随机捅一下,并要求你向我们展示权重[]数组的声明。

我甚至打赌传统的虚拟果冻甜甜圈,重量[]未被宣布为容纳40个元素。

答案 1 :(得分:2)

  

为了程序,我们可以假设该功能是完全独立的

这是一个很大的错误,它从来都不是。这会在其上写入堆损坏。这很少会导致代码行崩溃,从而破坏堆。总是晚些时候,有时候晚了。