0

私はsrand(固定シードで ) を使用しており、100、200、300、...、1000 などの一連の異なるシードを使用してテストを実行する必要があります。これは可能ですか?事はsrand()mainの冒頭で定義されているので、シードを変数で制御する方法がわかりません。

4

3 に答える 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 に答える