В вашем коде есть несколько ошибок.
- Вы должны переместить создание
random_device
и заполнение mt19937
за пределы цикла for. Я также предлагаю то же самое для uniform_real_distribution<int>
mt19937
принимает значение конструктора seed, а не random_device
, поэтому вы должны вызвать его, чтобы получить seed (rd()
)
- Вам следует использовать
uniform_int_distribution<int>
, если вы генерируете целые числа
- Если вы намереваетесь сгенерировать число в 0x7FFFFFFF, вы должны явно указать это число, но если вы хотите получить числа до максимального значения
int
, я предлагаю использовать больше стиля C ++ std::numeric_limits<int>::max()
Вот рабочий пример:
#include <cstdio>
#include <random>
#include <limits>
using namespace std;
int main(){
random_device rd;
mt19937 gen(rd());
uniform_int_distribution<int> dis(0, std::numeric_limits<int>::max());
for (int p = 0; p < 10; p++) {
printf("%i\n", dis(gen));
}
return 0;
}