Повысить случайное число без изменений - PullRequest
0 голосов
/ 28 мая 2019

У меня возникла проблема при генерации случайного числа с буст-библиотекой в ​​CPP. Когда я пытаюсь распечатать случайное число, значение возвращает то же значение. Вот мой код.

for(int i = 0; i < TOTAL_PARTICLES; i++) {
            boost::random::mt19937 engine(static_cast<unsigned int>(std::time(0)));                    
            randn = boost::bind(boost::random::uniform_real_distribution<>(-2.5, 2.5), engine);                            
            cout << "Random : " << randn() << endl;
        }

1 Ответ

1 голос
/ 28 мая 2019

Вы используете один и тот же начальный номер двигателя каждый раз, и поэтому вы будете получать один и тот же набор случайных чисел каждый раз.Поэтому просто запустите двигатель за пределы цикла for следующим образом:

boost::random::mt19937 engine(static_cast<unsigned int>(std::time(0)));                    
for(int i = 0; i < TOTAL_PARTICLES; i++) 
{
    randn = boost::bind(boost::random::uniform_real_distribution<>(-2.5, 2.5), engine);                            
    cout << "Random : " << randn() << endl;
}
...