私はsrand(
固定シードで ) を使用しており、100、200、300、...、1000 などの一連の異なるシードを使用してテストを実行する必要があります。これは可能ですか?事はsrand()
mainの冒頭で定義されているので、シードを変数で制御する方法がわかりません。
質問する
1210 次
3 に答える
3
srand(time(NULL)) を使用して、time.h ヘッダーを含めることができます。現在のシステム時刻で srand() を初期化します。それが役に立てば幸い。!!
于 2012-09-04T04:10:11.597 に答える
0
srand の呼び出しで使用されるすべての異なるシード値に対して、疑似乱数ジェネレーターは、その後の rand の呼び出しで異なる一連の結果を生成することが期待できます。同じシードを持つ 2 つの異なる初期化は、疑似乱数ジェネレーターに指示して、両方のケースで以降の rand の呼び出しに対して同じ一連の結果を生成します。
これは次のことを示しています。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main ()
{
printf ("First number: %d\n", rand() % 100);
srand ( time(NULL) );
printf ("Random number: %d\n", rand() % 100);
srand ( 1 );
printf ("Again the first number: %d\n", rand() %100);
srand ( time(NULL) );
printf ("Random number: %d\n", rand() % 100);
printf ("Random number: %d\n", rand() % 100);
printf ("Random number: %d\n", rand() % 100);
printf ("Random number: %d\n", rand() % 100);
return 0;
}
出力:
First number: 41
Random number: 76
Again the first number: 41
Random number: 76
Random number: 14
Random number: 74
Random number: 41
Press any key to continue
于 2012-09-04T05:10:39.973 に答える
0
単体テストで rand() を使用するコードをテストする場合はsrand(<const>)
、テストのセットアップの一部として呼び出す必要があります。
このようにして、テストはスイートの一部である場合と同じように動作し、独立して実行されます。
于 2012-09-04T04:29:52.657 に答える