Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;仅打印值时导致崩溃的随机数。很奇怪_C++_Random_Crash - Fatal编程技术网

C++ C++;仅打印值时导致崩溃的随机数。很奇怪

C++ C++;仅打印值时导致崩溃的随机数。很奇怪,c++,random,crash,C++,Random,Crash,我需要一个介于0.0和1.0之间的值。因此,我使用时间为随机数生成器设定种子。然后我使用rand函数得到一个介于0和10之间的值。然后取那个值,除以10,得到我的十进制值。我的问题是,当我尝试打印(dRandNum%10)生成的值时,程序将随机崩溃。同样值得注意的是,它不是在for循环的中间崩溃。在第一次尝试打印时,它总是在开头正确。老实说,我认为编译器有点奇怪,我想知道是否有人能告诉我其他的方法 double dRandNum = 0; int tempRand = 0; /* initia

我需要一个介于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;
} 
double dRandNum=0;
int-tempRand=0;
/*初始化随机种子:*/
srand((未签名)时间(0));
对于(int i=0;i<40;i++)
{
tempRand=rand();

cout好的,我将在这里进行随机尝试,并要求您向我们展示权重[]数组的声明


我甚至敢打赌传统的虚拟果冻甜甜圈,weights[]并没有声明包含40个元素。

好的,我在这里随机尝试一下,请您向我们展示weights[]数组的声明

我甚至敢打赌,传统的虚拟果冻甜甜圈的重量[]并没有声明包含40种元素

为了程序起见,可以假定函数是完全独立的

这是一个很大的错误,从来都不是。这上面写满了堆损坏。这很少会导致损坏堆的代码行崩溃。总是晚一点,有时晚很多

为了程序起见,可以假定函数是完全独立的


这是一个很大的错误,从来都不是。这上面写满了堆损坏。这很少会导致损坏堆的代码行崩溃。总是晚一点,有时晚一点。

我不知道从哪里得到的。这是一个打印输出示例。1:3 Random Num之前的tempRand=13043 Random Num,1:0之后的1:3 Random Num。3@Geeklat我将你的代码复制到VS 2010中,效果很好。我不知道你为什么崩溃。标签“random crash”“随机崩溃”是什么意思?你收到的错误消息是什么?你在什么平台上,这个代码段在什么条件下运行?你试过运行它几次了吗?我真的认为这是编译器的问题。我正在运行DevC++所以它退出了G++编译器。@Geeklat如果你使用m像这样的数字n的od为n%10,那么结果必须小于10(它是除以10后的余数)。如果你继续用整数算术将结果除以10,结果是零。我不确定你从哪里得到的结果。这是一个打印输出示例。1:3之前的tempRand=13043 Random Num,1:0之后的Random Num。3@Geeklat我将你的代码复制到VS 2010中,效果很好。我不知道你为什么崩溃。标签“随机崩溃”“随机崩溃”是什么意思?你收到的错误消息是什么?你在什么平台上,这个代码段在什么条件下运行?你试过运行它几次了吗?我真的认为这是编译器的问题。我正在运行DevC++所以它退出了G++编译器。@Geeklat如果你使用m像这样的数字n的od为n%10,那么结果必须小于10(它是除以10后的余数)。如果继续使用整数运算将结果除以10,则结果为零。捕捉得好!我在其他位置动态分配了一个数组,该数组被1个元素关闭。感谢gusto!捕捉得好!我在其他位置动态分配了一个数组,该数组被1个元素关闭。感谢gusto!