だから、私はランダムなベクトルを作成しようとしています (拡張可能な配列ではなく、ジオメトリを考えてください)。ランダムなベクトル関数を呼び出すたびに、y と z は異なりますが、同じ x 値を取得します。
int main () {
srand ( (unsigned)time(NULL));
Vector<double> a;
a.randvec();
cout << a << endl;
return 0;
}
関数を使用して
//random Vector
template <class T>
void Vector<T>::randvec()
{
const int min=-10, max=10;
int randx, randy, randz;
const int bucket_size = RAND_MAX/(max-min);
do randx = (rand()/bucket_size)+min;
while (randx <= min && randx >= max);
x = randx;
do randy = (rand()/bucket_size)+min;
while (randy <= min && randy >= max);
y = randy;
do randz = (rand()/bucket_size)+min;
while (randz <= min && randz >= max);
z = randz;
}
何らかの理由で、randx は一貫して 8 を返しますが、他の数値は (疑似) ランダム性に完全に従っているようです。ただし、たとえば randy を定義する呼び出しを randx の前に置くと、randy は常に 8 を返します。
最初の乱数が常に 8 になるのはなぜですか? シードが間違っていますか?