我想弄清楚如何在C++中生成隨機高斯向量。生成隨機高斯數並將它們放入矢量中是否足夠?如何在C++中創建隨機高斯向量?
0
A
回答
0
Boost.Random包括正態分佈生成器。您應該可以使用它來填充矢量。完整的測試示例代碼:
#include <boost/random/random_device.hpp>
#include <boost/random/normal_distribution.hpp>
#include <vector>
int main()
{
boost::random::random_device rng;
boost::random::normal_distribution<> generator(0, 100);
std::vector<int> vec;
vec.reserve(100);
std::generate_n(
std::back_inserter(vec),
100,
[&]() { return generator(rng); });
for (auto i : vec)
std::cout << i << ',';
return 0;
}
1
編輯:我才意識到你,或許,在談論多元高斯分佈。在這種情況下,我認爲,您需要N正態分佈,每個正態分佈對應於一個座標中的單變量分佈。然後,通過對每個分佈進行採樣,生成隨機矢量的座標。實際上,使用C++ 11僞隨機數生成(code on ideone.com),下面編輯的代碼表示使用二維隨機矢量的座標。請注意,在給出的示例中,兩個座標之間將存在相關性,因爲在連續的僞隨機數之間存在相關性。可以嘗試使用具有兩個發生器的兩個種子,並使用標準庫提供的更復雜的算法。但是,我覺得,即使使用兩種不同的發生器,仍然可能存在相關性 - 必須對此問題進行調查才能給出明確的答案。
#include <iostream>
#include <vector>
#include <random>
#include <iomanip>
int main()
{
std::random_device device_random_;
std::default_random_engine generator_(device_random_());
std::normal_distribution<> distribution_x_(1.0, 0.5);
std::normal_distribution<> distribution_y_(10.0, 1.0);
std::vector<double> vector_x_, vector_y_;
for (int counter_(0); counter_ < 10; ++counter_)
{
vector_x_.push_back(distribution_x_(generator_));
vector_y_.push_back(distribution_y_(generator_));
std::cout << std::fixed << std::setprecision(4) << "(" << vector_x_[counter_]
<< ", " << vector_y_[counter_] << ")\n";
}
return (0);
}
程序輸出:
(0.2390, 10.3887)
(1.1087, 9.5847)
(1.0920, 9.3468)
(1.1982, 11.6633)
(0.8840, 11.0903)
(0.5573, 8.5121)
(0.6709, 11.4706)
(1.1477, 9.4374)
(0.8778, 11.0323)
(0.8255, 9.7704)
相關問題
- 1. [matlab]使用協方差矩陣創建隨機高斯變量
- 2. 用MATLAB創建高斯隨機變量X
- 3. 如何創建任意數量的隨機向量列?
- 4. 在矢量中創建隨機值Matlab
- 5. 如何使用向量創建隨機雙精度矩陣?
- 6. 如何在c/C++中創建僞隨機數?
- 7. 用高斯隨機分佈創建矩陣(mx n)
- 8. 爲高斯馬爾可夫隨機場創建精度矩陣
- 9. 如何在Java中創建隨機BigDecimal?
- 10. 如何在Eclipse中創建隨機數?
- 11. 如何在XAML中使用在c#中創建的隨機變量?
- 12. 創建長隨機量
- 13. 如何創建隨機URL?
- 14. 在C++中使用矢量創建隨機數
- 15. OpenCL中的高斯分佈隨機數
- 16. 如何在C++中創建一個隨機數組的數組
- 17. 如何在Objective-C中創建一個隨機float?
- 18. 如何在C#中創建獨特的隨機字符序列?
- 19. 如何在C++中創建一個隨機的160位素數?
- 20. 如何在CLI/C++中創建一個隨機數字?
- 21. 創建與MATLAB兩個向量的隨機抽樣的矢量
- 22. 高熵隨機數據創建功能?
- 23. 如何在three.js中創建指向多個方向的隨機對象
- 24. Rcpp如何在Rcpp中生成隨機多變量法向量?
- 25. 在C++類中創建二維向量
- 26. 在C++中創建向量的置換
- 27. 在C++中創建boost dynamic_bitset向量
- 28. C++向量隨機隨機洗牌的一部分
- 29. stl向量如何隨機訪問
- 30. 如何創建高斯矩陣文件
你需要解釋一下你的高斯矢量的意思。對這些詞我至少有三種不同的解釋。 – Gene
您希望我們使用哪種「矢量」的定義? C++的定義還是數學的? –