2012-03-15 26 views
0

私は攻撃関数が呼び出されるたびに乱数を生成する必要があるゲームを作っています。私はsrand(time(NULL))を使っているので、プログラムの実行ごとに別のプログラムを生成します。しかし、私が複数回攻撃すると、私はすでに呼び出されたのと同じ番号を返します。ここに私のランダム関数のサンプルがあります。関数が呼び出されるたびに乱数を得る方法

srand(time(NULL)); 
int attrand = rand() % 16; 

プログラムの同じ実行で呼び出されるたびに別の番号を返すようにするにはどうすればよいですか?

答えて

6

シードの初期化をいくつかのinit関数に移動し、この関数にはint attrand = rand() % 16;だけを保持します。

void my_init() { 
    srand(time(NULL)); 
} 

int get_random() { 
    return rand() % 16; 
} 
+0

ありがとう!では、いつmy_initを呼び出しますか?私はget_randomを使う前に毎回? – atb

+0

いいえ、それは全体のポイントを逃すでしょう、あなたはそれを1つだけ呼び出す必要があります(メインから言えましょう、 – MByD

関連する問題