Я не использую с C++ (только запрограммированный C++ пару раз), но я думаю, что проблема связана с объявлением rand.
Try using rand() % 3 + 1;
Если это не работает во внимание время (0), это может занять «СЕЙЧАС» значение для правильной рандомизации (как правило, языки программирования принимают милисекунд для рандомизации). PD: Возможно, я ошибаюсь в отношении того, что я сказал о времени, прокомментируйте это, если эти два решения не помогут вам.
Существует пример рандов от 1 до 10 рабочих:
/* rand example: guess the number */
#include <stdio.h> /* printf, scanf, puts, NULL */
#include <stdlib.h> /* srand, rand */
#include <time.h> /* time */
int main()
{
int iSecret, iGuess;
/* initialize random seed: */
srand (time(NULL));
/* generate secret number between 1 and 10: */
iSecret = rand() % 10 + 1;
do {
printf ("Guess the number (1 to 10): ");
scanf ("%d",&iGuess);
if (iSecret<iGuess) puts ("The secret number is lower");
else if (iSecret>iGuess) puts ("The secret number is higher");
} while (iSecret!=iGuess);
puts ("Congratulations!");
return 0;
}
Ура!
Еще какой-нибудь код поможет – eavidan
Пожалуйста, укажите пример [MCVE]. – NonCreature0714
Возможно, связанный: http://stackoverflow.com/questions/2129705/why-is-rand-anything-always-0-in-c?rq=1 – HolyBlackCat