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