В настоящее время я пишу roguelike и, естественно, использую много генерации случайных чисел.
Проблема, с которой я сталкиваюсь, заключается в том, что если я "перегрею" rand(); моя программа рухнет.
Если я генерирую только 20 или около того целых чисел за кадр, все в порядке... но когда количество случайных чисел достигает сотен, программа вылетает. Чем больше я создаю каждый кадр, тем быстрее он падает... что наводит меня на мысль, что происходит какой-то пайлап.
Я провел тесты и на 20 rand(); вызовов на кадр, он будет работать 24 часа подряд на максимальной скорости без сбоев. Втрое больше, и это не составляет и десяти минут.
Если я поставлю srand(); при инициализации я могу создать тысячи случайных чисел, прежде чем он заблокируется, но если я поставлю srand(); внутри самого кадра я делаю примерно 2-8 кадров. Если это имеет значение, я использую time(null) для раздачи.
чем чаще я вызываю rand(); тем быстрее он рухнет.
Помощь?
rand()
? Вы использовали отладчик, чтобы подтвердить это поведение? Даже если это так, если вы не можете воспроизвести проблему в простом случае (int main(void) {while(1) rand(); }
), я бы не заподозрил ранд в качестве вашей проблемы. - person Yann Ramin   schedule 05.04.2011