C ++-std :: srand
C Std Srand
ヘッダーで定義-ヘッダーファイルで定義
1. std::string::empty
void srand (unsigned int seed)
乱数ジェネレーターの初期化-疑似乱数ジェネレーターの初期化(関数)
疑似乱数ジェネレータは、seed
として渡された引数を使用して初期化されます。
疑似乱数ジェネレーターの使用seed
渡されたパラメーターは初期化されます。
さまざまなseed
ごとにsrand
の呼び出しで使用される値の場合、疑似乱数ジェネレーターは、後続のrand
の呼び出しで異なる一連の結果を生成することが期待できます。
電話用srand
使用するたびseed
値、後続のrand
で疑似乱数ジェネレーターを期待できます呼び出し中にさまざまな結果シーケンスが生成されます。
同じseed
を使用した2つの異なる初期化後続のrand
の呼び出しで、同じ一連の結果が生成されます。
同じですseed
2つの異なる初期化の後にrand
が続きます同じ結果シーケンスが呼び出しで生成されます。
seed
の場合が1に設定されている場合、ジェネレータは初期値に再初期化され、rand
を呼び出す前と同じ値を生成します。またはsrand
。
よろしければseed
1に設定すると、ジェネレーターが初期値に再初期化され、rand
が生成されて呼び出されます。またはsrand
以前と同じ値。
ランダムな数を生成するために、srand
通常、関数time
によって返される値など、特定のランタイム値に初期化されます。 (ヘッダーで宣言されています)。これは、ほとんどの些細なランダム化のニーズに十分に特徴的です。
ランダムな数を生成するために、通常srand
たとえばtime
によっていくつかの一意のランタイム値に初期化されます関数によって返される値(ヘッダーfileStatement内)。これは、ほとんどの些細なランダム化要件に対して十分に一意です。
std::rand()
で使用される疑似乱数ジェネレーターをシードします値はseed
です。
値によるseed
播種std::rand()
使用される疑似乱数ジェネレータ。
rand()
の場合srand()
、rand()
への呼び出しの前に使用されますsrand(1)
がシードされているかのように動作します。
ある場合srand()
電話をかける前にrand()
、次にrand()
まるでsrand(1)
のように振る舞います播種。
毎回rand()
同じseed
がシードされている場合、同じ値のシーケンスを生成する必要があります。
同じseed
播種rand()
の場合、同じ値のシーケンスを生成する必要があります。
srand()
スレッドセーフであるとは限りません。 srand()
スレッドセーフであるとは限りません。
dereference [ˌdiːˈrefrəns]: v. Indirect reference, indirect access, dereference reallocate [ˌriːˈæləkeɪt]: v. Reallocate, then assign
一般的に、疑似乱数ジェネレーターは、プログラムの開始時にrand()
を呼び出す前に、一度だけシードする必要があります。疑似乱数の新しいバッチを生成するたびに、繰り返しシードしたり、再シードしたりしないでください。
一般的に、疑似乱数ジェネレーターは1回だけシードする必要があります。プログラムの開始時に、any rand()
電話の前に。疑似乱数の新しいバッチを生成するたびに、シードまたは再シードを繰り返さないでください。
標準的な方法は、time(0)
への呼び出しの結果を使用することです。種として。ただし、time()
time_t
を返します値、およびtime_t
整数型であるとは限りません。ただし、実際には、すべての主要な実装でtime_t
が定義されています。整数型であり、これはPOSIXが要求するものでもあります。
標準的な方法はtime(0)
を使用することですシード呼び出しの結果。ただしtime()
戻るtime_t
保証なしの値time_t
整数型です。実際には、主流の実装はすべて定義しますtime_t
これは整数型であり、これはPOSIXでも必要です。
2.パラメータ
seed
seed
として使用される整数値疑似乱数ジェネレータアルゴリズムによる。
疑似乱数ジェネレータアルゴリズムは、seed
の整数値として使用されます。
シード値
3.戻り値
なし-なし
4.例
srand(time(NULL))
現在の時刻を使用して、疑似乱数ジェネレーターを初期化します。 time(NULL)
関数の戻り値はas srand()
です。関数のパラメーター。srand(time(NULL))
現在のシステム時刻を乱数のシードとして使用して乱数を生成し、NULL
に設定します。システムの現在の時刻を秒単位で取得します。
4.1 std::srand
//============================================================================ // Name : std::srand // Author : Yongqiang Cheng // Version : Version 1.0.0 // Copyright : Copyright (c) 2019 Yongqiang Cheng // Description : Hello World in C++, Ansi-style //============================================================================ #include /* printf, NULL */ #include /* srand, rand */ #include /* time */ int main() { printf('First number: %d
', rand() % 100) srand(time(NULL)) printf('Random number: %d
', rand() % 100) srand(1) printf('Again the first number: %d
', rand() % 100) return 0 }
可能な出力:
First number: 83 Random number: 13 Again the first number: 83
4.2 std::srand
//============================================================================ // Name : std::srand // Author : Yongqiang Cheng // Version : Version 1.0.0 // Copyright : Copyright (c) 2019 Yongqiang Cheng // Description : Hello World in C++, Ansi-style //============================================================================ #include #include #include int main() { std::srand(std::time(0)) // use current time as seed for random generator int random_variable = std::rand() std::cout << 'Random value on [0 ' << RAND_MAX << ']: ' << random_variable << '
' return 0 }
可能な出力:
Random value on [0 2147483647]: 631634451
5.データの競合-データの競合
この関数は、内部状態オブジェクトにアクセスして変更します。これにより、rand
への同時呼び出しでデータの競合が発生する可能性があります。またはsrand
。
この関数は、内部状態オブジェクトにアクセスして変更します。これにより、同時呼び出しが発生する可能性がありますrand
またはsrand
データの競争。
一部のライブラリは、rand
の代替機能を提供しますこれにより、この種のデータ競合が明示的に回避されます:rand_r
(ポータブルではありません)。
一部のライブラリはrand
を提供します代替機能であるこの種のデータ競合を明らかに回避します:rand_r
(ポータブルではありません)。
C ++ライブラリの実装では、data races
がないことを保証できます。この関数を呼び出すため。
C ++ライブラリの実装により、この関数を呼び出すときにデータの競合が発生しないようにすることができます。
6.例外安全性-例外安全性
スローしない保証:この関数は例外をスローしません。
スロー保証なし:この関数は例外をスローしません。
assignment [ə'saɪnmənt]: n. assignment, assignment, assignment
参考文献
http://www.cplusplus.com/reference/cstdlib/srand/
https://en.cppreference.com/w/cpp/numeric/random/srand