我在C++ 11中生成隨機數。當我運行我的代碼時將隨機數生成限制在一個範圍內使用<random>
using namespace std;
static std::mt19937_64 rng;
int main() {
rng.seed(11);
std::cout << rng() << std::endl;
}
它返回隨機數。不過,我想限制這個範圍的數字,比如1-1000。我將如何使用C++ 11中引入的新的<random>
文件/庫來做到這一點?
我在C++ 11中生成隨機數。當我運行我的代碼時將隨機數生成限制在一個範圍內使用<random>
using namespace std;
static std::mt19937_64 rng;
int main() {
rng.seed(11);
std::cout << rng() << std::endl;
}
它返回隨機數。不過,我想限制這個範圍的數字,比如1-1000。我將如何使用C++ 11中引入的新的<random>
文件/庫來做到這一點?
使用std::uniform_int_distribution
從<random>
。
實施例:
#include <random>
#include <iostream>
int main()
{
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<int> dis(1, 1000);
std::cout << dis(gen) << '\n';
}
<random>
的報頭包括許多可以使用其他分佈。你可以看看here
+1可以輕鬆地適應其他類型的發行版,這與我評論中的思考過程不同。 – chris
哇,謝謝代碼和一切! – hichris123
另外,我將如何將這個隨機數存儲爲一個變量? – hichris123
使用mod運算符'%' – andre
如果你想讓它們均勻分佈,請http://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution。 – chris
@andre Nope,模運算符不會生成統一的數字分佈,請查看:http://www.cplusplus.com/reference/cstdlib/rand/ – 2013-07-15 21:06:12