Я использую библиотеку ncurses для создания игры. У меня возникают проблемы с созданием правильных случайных чисел. Цикл while ниже должен содержать генерирование случайных чисел до тех пор, пока они не составят от 1 до 45 (это мои ограничения по оси Y на стандартном экране). Я не могу понять, что я делаю неправильно, потому что условие цикла while отлично подходит для меня. Проблема в том, что while цикл начинает работать бесконечно. Я ничего не делаю, кроме как печатать сгенерированные числа в конце, так как я просто хочу видеть, что генерируются правильные числа. может ли кто-нибудь помочь мне с этой проблемой? Следующее - мой int main.генерировать случайное число в диапазоне C++
int main()
{
int r,c,x=0;
initscr();
raw();
keypad(stdscr, TRUE);
noecho();
//mvprintw(22,45,"<");
getmaxyx(stdscr,r,c);
int n,n2 = 0;
while((n<1)||(n>45)){
srand (time(NULL));
n = rand();
srand (time(NULL));
n2 = rand();
}
mvprintw(4,10,"First Random Number: %d\n", n);
mvprintw(5,10,"Second Random number: %d\n", n2);
getch();
endwin();
return 0;
}
Прежде всего, не назовите 'srand' несколько раз, это даст очень плохие результаты. Во-вторых, почему вы просто вызываете plain 'rand()' вместо чего-то вроде '(rand()% 45) + 1'? – UnholySheep
Есть проблема с 'rand()', вы можете найти это http://www.lesinskis.com/code_repair_01_rand_problems.html, чтобы быть интересным. – shuttle87
C или C++? ответы будут сильно различаться. – quantdev