2016-09-25 3 views
-3

Я работаю над игрой из камня, бумаги, ножниц и одним из способов, которым я настраиваю выбор компьютера, - это rand(). I #include <ctime>, семенной rand в начале main с srand(time(0));, и я называю это в определении функции с помощью computerWeaponChoiceV = (rand() % 3) + 1;. Однако, когда я тестирую свою программу, он всегда печатает computerWeaponChoiceV как 0.rand() только устанавливает переменную до 0

Я что-то не так с rand()? Если вам нужно больше моего кода, пожалуйста, дайте мне знать.

+3

Еще какой-нибудь код поможет – eavidan

+4

Пожалуйста, укажите пример [MCVE]. – NonCreature0714

+0

Возможно, связанный: http://stackoverflow.com/questions/2129705/why-is-rand-anything-always-0-in-c?rq=1 – HolyBlackCat

ответ

-4

Я не использую с 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; 
} 

Ура!

+0

Изменение rand на то, как вы предложили, ничего не делает, оно печатает только 0 – njwoodard

+0

и устанавливает srand (время (NULL)); вместо srand (time (0)) ;? – JoelBonetR

+0

srand (время (NULL)); и computerWeaponChoiceV = rand()% 3 + 1; и, очевидно, проверьте, что у вас есть необходимые библиотеки (как я упомянул на примере) – JoelBonetR

Смежные вопросы