Итак, я пытаюсь создать случайный вектор (например, геометрия, а не расширяемый массив), и каждый раз, когда я вызываю свою функцию случайного вектора, я получаю одно и то же значение x, хотя y и z различны.
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?Я неправильно высеваю?