2017-02-15 12 views
0

Я пытаюсь найти случайные индексы для выбора некоторых точек в облаке точек. Ниже приведен код. Однако даже после использования srand() я получаю одинаковый номер все три раза. Может кто-то, пожалуйста, помогите, в отношении этого?Случайные индексы в облаке точек

/* find three points randomly */ 
for (long i = 0; i < 3; ++i) 
{ 
    srand (time(NULL)); 
    cout <<"\nRandom index" << (rand() % points.size() + 1); 
} 
+0

внимательно прочитать о [srand()] (HTTP: //www.cplusplus.com/reference/cstdlib/srand/) вы получите то, что не так с вашим кодом. – Redanium

+1

Yup ... $ srand() $ нужно вызывать однажды ... вне цикла ... спасибо :) –

+0

Добро пожаловать;) – Redanium

ответ

1

Вы высеваете свой случайный генератор в одно и то же время, после каждой итерации цикла.

Вместо семян это один раз в начале:

/* find three points randomly */ 
srand(time(NULL)); 
for(int i = 0; i != 3; ++i) { 
    cout <<"\nRandom index" << (rand() % points.size() + 1); 
} 

Вам также не нужно использовать long для цикла из трех шагов :)