我目前正在創建一個類,我希望每次創建對象時都要使用隨機數初始化其中一個私有成員。下面的代碼不會產生問題:隨機數類內初始化
private:
unsigned random = rand() % 10;
我會,但是,喜歡用C++ 11個隨機引擎和分佈做到這一點。我想能夠做到沿着下面的代碼線的東西,它不會編譯,但會給出什麼,我試圖做一個總體思路:
private:
unsigned random = distribution(mersenne_generator(seed));
static std::random_device seed_generator;
static unsigned seed = seed_generator(); //So that it's not a new seed each time.
static std::mt19937 mersenne_generator;
static std::uniform_int_distribution<unsigned> distribution(0, 10);
此代碼不能編譯,因爲我試圖在類中定義一些靜態成員。但是,我不確定在哪裏定義它們。我可以創建一個初始化所有內容的成員函數,但之後我必須在main中運行它,這是我不想要的。我想只是在類中對所有隨機定義進行分類,以便在main中創建一個對象時,它將隱式地創建隨機數。有什麼建議麼?
這可能有助於http://stackoverflow.com/questions/11498304/generate-random-numbers-in-c-at-compile-time – imreal
是這個問題只是如何定義/初始化靜態數據成員?你可以發佈[SSCCE](http://sscce.org)嗎? – dyp
我試圖使用C++ 11隨機生成器和引擎來實現與第一個代碼塊(每次創建對象時爲該成員生成一個隨機數)相同的功能。我不知道如何去做,靜態數據成員只是我的嘗試,但它不能編譯。我把它作爲一種僞代碼來展示我的意圖。 – JamesLens