乱数の生成におけるシードとは何ですか?
数百から数千の乱数を生成する必要があります。「シード」の使用について多くのことを読みました。種子とは何ですか?乱数が始まるシードですか? たとえば、シードを 5 に設定すると、5 から制限までの数値が生成されますか? したがって、たとえば3を与えることは決してありません。
私はC++を使用しているので、例を提供する場合はC++であるといいでしょう。
ありがとう!
通常乱数列と呼ばれるものは、実際には「疑似乱数」の数列です。これは、値が決定論的アルゴリズムを使用して計算され、確率が実際の役割を果たさないためです。
「シード」はシーケンスの開始点であり、同じシードから開始すると、同じシーケンスの数字が得られることが保証されます。これは、たとえばデバッグに非常に役立ちます (プログラムのエラーを探しているときに、問題を再現して調査できるようにする必要があります。非決定論的なプログラムは、実行ごとに異なるため、デバッグがはるかに困難になります)。 .
数字のランダムなシーケンスだけが必要で、それを再現する必要がない場合は、現在の時間をシードとして使用するだけです...たとえば、次のようにします。
srand(time(NULL));
だから、このように言いましょう:
あなたとあなたの友人がシードを同じ数に設定した場合、それまでにあなたとあなたの友人は同じ乱数を取得します。したがって、私たち全員がこの単純なプログラムを作成すると:
#include<iostream>
using namespace std;
void main () {
srand(0);
for (int i=0; i<3; i++){
int x = rand()%11; //range between 0 and 10
cout<<x<<endl;
}
}
(5, 8, 8) という同じ乱数が得られます。
毎回異なる数値を取得したい場合は、srand(time())を使用できます。