Я пытаюсь преобразовать эту строку MATLAB в C++: rp = randperm(p);
Сделайте std :: random_device и std :: mt19937 следуйте равномерному распределению?
Вслед за randperm
documentation:
randperm использует тот же генератор случайных чисел как рандов
И в rand
page :
r и возвращает одно равномерно распределенное случайное число
Так rand
следует равномерному распределению. Мой код на C++ основан на:
std::random_device rd;
std::mt19937 g(rd());
std::shuffle(... , ... ,g);
Мой вопрос: следующий код следует за равномерным распределением? Если нет, как это сделать?
['std :: uniform_int_distribution'] (http://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution#Example) – BoBTFish
По крайней мере,' std :: mt19937' должно быть однородным, [если вы доверяйте титулу авторов оригинала] (https://dx.doi.org/10.1145%2F272991.272995). И 'std :: random_device' просто используется для семян Mersenne Twister, поэтому на самом деле это не должно быть равномерным. – mindriot
@mindriot благодарит за ваш ответ.Чем отличается разница по сравнению с 'std :: uniform_int_distribution', описанная выше? – justHelloWorld