Случайное число C ++, вызывающее сбой при выводе только значения. Очень странно - PullRequest
0 голосов
/ 08 мая 2011

Мне нужно значение от 0,0 до 1,0.Итак, я запускаю генератор случайных чисел, используя время.Затем я получаю значение от 0 до 10, используя функцию rand.После этого я беру это значение и делю его на 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 ]

3 голосов
/ 08 мая 2011

Хорошо, я собираюсь сделать здесь случайный удар и попросить вас показать нам объявление массива weights [].

И я даже поставлю на традиционный виртуальный пончик с желе, который взвешивает [] не объявляется содержащим 40 элементов.

2 голосов
/ 09 мая 2011

Ради программы можно предположить, что функция полностью независима

Это большая ошибка, никогда не бывает. Это повреждает кучу коррупции. Который редко вызывает сбой в строке кода, который повреждает кучу. Всегда позже, иногда намного позже.

...