Я пытаюсь выяснить, как создать случайный вектор Гаусса в C++. Достаточно ли было бы генерировать случайные гауссовские числа и помещать их в вектор?Как создать случайный вектор Гаусса в C++?
ответ
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;
}
EDIT: Я просто понял, что вы, вероятно, говорить о многомерном гауссовском распределении. В этом случае, я думаю, вам понадобятся нормальные распределения, каждый из которых соответствует одномерному распределению вдоль одной из координат. Затем вы генерируете случайный вектор 's координаты путем выборки каждого из распределений. Эффективно отредактированный код ниже представляет координаты 10 двумерных случайных векторов, используя генерацию псевдослучайных чисел 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. Как создать 2D-случайный вектор в MATLAB?
- 2. Rcpp Как создать случайный многомерный нормальный вектор в Rcpp?
- 3. Как создать случайный вектор в октаве, который суммируется до константы?
- 4. Как генерировать случайный вектор в Spark
- 5. Вставьте случайный разрыв в вектор
- 6. Как создать случайный IPv6 в C#?
- 7. JULIA: Как переставить случайный вектор в julia?
- 8. Исключение Гаусса-Иордана в C++
- 9. Как создать случайный цвет?
- 10. Как создать вектор массива (string []) в C++
- 11. Как создать вектор связанных списков в C++?
- 12. Как создать вектор CvSVM
- 13. Создать случайный вектор внутри прямоугольника, но не круг?
- 14. Как создать вектор Вектор В R
- 15. Как создать случайный идентификатор?
- 16. Как создать случайный ответ
- 17. Как создать случайный код
- 18. Как создать случайный UIColor?
- 19. Как создать случайный объект?
- 20. случайный вектор между 0 и 1
- 21. C++ не может создать вектор
- 22. Как создать вектор другого класса? (C++ 11)
- 23. Как создать многомерный многопоточный вектор C++?
- 24. Создать 2D-вектор из ввода в C++
- 25. создать вектор объектов в стеке? (C++)
- 26. Как создать случайный вектор с целыми числами и определенной длиной в R?
- 27. Метод Гаусса Джорда в Basic C Multi
- 28. Пытается создать трехмерный вектор в C++
- 29. Можно ли создать вектор типов в C++?
- 30. Как создать вектор?
Вы должны объяснить, что вы имеете в виду гауссовского вектора. Есть, по крайней мере, три разных интерпретации этих слов, о которых я могу думать. – Gene
Какое определение «вектор» вы хотите использовать? Определение C++ или математическое? –