2016-09-25 7 views
-3

私は岩石、紙、はさみのゲームを作っています。私がコンピュータの選択肢を設定する方法の1つはrand()です。私は#include <ctime>、メインの先頭にあるseedのアドレスは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)、それが適切に(通常の言語がランダムにミリ秒を取るプログラミング)ランダム化する「NOW」の値をとることがあります。 PD:私が言ったことは間違っているかもしれません。

/* 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; 
} 

乾杯:1から10の作業へのrandの例があります

+0

あなたが提案した方法にrandを変更することは何もせず、0 – njwoodard

+0

とsrand(time(NULL))を設定するだけです。代わりにsrand(time(0));? – JoelBonetR

+0

srand(時間(NULL)); および computerWeaponChoiceV = rand()%3 + 1;そして、あなたが適切な図書館を持っていることを確認してください(私が例を挙げたように) – JoelBonetR

関連する問題