簡體   English   中英

CMD中的隨機數生成器C ++錯誤

[英]Random Number Generator C++ Error in CMD

我正在嘗試制作一個隨機數生成器,以生成0到999之間的數字。

我最初確實在從time(null)生成mt19937的種子的位置運行它,但是發現這將導致該數字每秒更改一次,並且速度不足以使我在for循環中再次調用它。

我正在使用code :: blocks編譯我的代碼,並且編譯沒有錯誤,但是當我運行代碼時,我在cmd中出錯。

Error: terminate called after throwing an instance of 'std::runtime_error'
  what():  random_device::random_device(const std::string&)

我做錯什么了嗎?

#include <iostream>
#include <random>

using namespace std;

//Random Number Generator
int numGen() {

    //Random Number Generator
    random_device rd;
    mt19937 mt(rd());
    uniform_int_distribution<int> dist(0, 999);

    for (int I = 0; I < 6; i++) {
        cout <<dist(mt) << " ";
    }

    cout <<endl;
}

更新:

我現在已經從Visual Studio運行了完全相同的代碼,並且沒有錯誤。

std::random_device實際上並不需要實現。

http://www.cplusplus.com/reference/random/random_device/

第三段。 如果設備不好,則拋出異常。 嘗試使用其他種子RNG。

您的函數從不返回值。 由於您具有int返回類型,因此您的函數必須返回可轉換為int 如果不想返回任何內容,可以將函數更改為void

由於您的異常引用了構造函數名稱,因此似乎無法創建隨機設備。 C ++ 14標准26.5.6.4具有

拋出:如果random_device無法初始化,則從異常派生的實現定義類型的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM