我mt19937_64用這樣的種子創建了一個實體;
std::mt19937_64 mt_engine{9156}
使用實體有什么區別,例如:
mt_engine()
要不就
mt_engine
在代碼中。我什么時候應該使用?
我似乎找不到任何可以準確解釋這一點的材料。我在這些東西上找到的所有東西要么充滿了我不需要的不必要資訊,要么是我目前不理解的數學,所以有幫助嗎?
編輯:我會包括兩個實體的代碼
#include <random>
#include <iostream>
int main() {
std::mt19937_64 mt_engine{91586}
std::cout << mt_engine(); // outputs just one long number
std::cout << mt_engine; //outputs sort of like an array of long numbers
}
這兩個用例有什么區別?謝謝。
uj5u.com熱心網友回復:
mt_engine是型別的運算式std::mt19937_64。你用它來指代生成器。
mt_engine()是型別的運算式std::uint_fast64_t。當您想從生成器中獲得亂數時,您可以使用它。
這兩個用例有什么區別?
std::cout << mt_engine()生成一個亂數,并輸出該數。
std::cout << mt_engine輸出內部狀態mt_engine
見operator<<,>>(std::mersenne_twister_engine)
將偽亂數引擎 e 的內部狀態序列化為由一個或多個空格分隔的十進制數序列,并將其插入流 ost。流的填充字符和格式化標志被忽略且不受影響。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/472570.html
標籤:C
