3

これが私がintを作成する方法です:

int randNumber = rand() % 4;
NSLog(@"%d", randNumber);

ただし、アプリを起動するたびに、何があっても数は同じです。

ボタンを作成し、乱数を再初期化して新しい番号をログアウトしてから乱数を生成するアクションをアタッチしましたが、アプリの起動時に乱数は常に同じです(20を超えて起動しました)時間)。

アプリの起動時に乱数が常に同じである理由はありますか?

4

4 に答える 4

13

arc4random()シードを必要としない、を使用してみてください

于 2012-05-12T03:33:16.507 に答える
3

プログラムを実行するたびに、異なるシードを指定する必要があります。シードが与えられると、乱数ジェネレーターは一連の数値を生成します。同じシードは同じ数のセットを生成します。別のセットを取得するには、別のシードが必要です。

いくつかのガイダンスについては、これを見てください:Objective-Cでの乱数の生成

于 2012-05-12T03:28:55.930 に答える
1

rand()は疑似乱数ジェネレーターです。シードを使用して、シードごとに正確なシーケンスを生成します。

プログラムの最初にこれを行う場合

srand(time(NULL));

動作します

于 2012-05-12T03:33:37.100 に答える
0

srand(unsigned int seed);を呼び出す必要があります。rand関数をシードします。srandを呼び出さない場合は、毎回1がシードされます。

于 2012-05-12T03:33:28.053 に答える