Tôi muốn biết nếu trong thư viện chuẩn C++ có bất kỳ phân phối gaussian trình tạo số hoặc nếu bạn có đoạn mã nào cần chuyển.C++: tạo phân phối gaussian
Xin cảm ơn trước.
Tôi muốn biết nếu trong thư viện chuẩn C++ có bất kỳ phân phối gaussian trình tạo số hoặc nếu bạn có đoạn mã nào cần chuyển.C++: tạo phân phối gaussian
Xin cảm ơn trước.
Thư viện chuẩn không có. Tuy nhiên, Boost.Random lại làm vậy. Tôi sẽ sử dụng nó nếu tôi là bạn.
Thư viện khoa học GNU có tính năng này. GSL - Gaussian Distribution
"sẽ có "? – jalf
Lol, tôi đã viết rằng trước khi tôi nhìn lên câu trả lời ... Tôi đoán tôi nên thay đổi nó :) –
C++ Báo cáo kỹ thuật 1 thêm hỗ trợ cho việc tạo số ngẫu nhiên. Vì vậy, nếu bạn đang sử dụng một trình biên dịch tương đối gần đây (Visual C++ 2008 GCC 4.3), rất có thể là nó có sẵn trong hộp.
Xem here để sử dụng mẫu std::tr1::normal_distribution
(và nhiều hơn thế nữa).
Nếu nó chưa có, bạn có thể tìm thấy nó như là một phần của Boost, quá: http: //www.boost. org/doc/libs/1_39_0/doc/html/boost_tr1/subject_list.html # boost_tr1.subject_list.random – stephan
Câu trả lời cho câu hỏi này thay đổi với C++ 11 có random header bao gồm std::normal_distribution. Giấy của Walter Brown N3551, Random Number Generation in C++11 có lẽ là một trong những giới thiệu tốt hơn cho thư viện này.
Đoạn mã dưới đây trình bày cách sử dụng tiêu đề này (see it live):
#include <iostream>
#include <iomanip>
#include <map>
#include <random>
int main()
{
std::random_device rd;
std::mt19937 e2(rd());
std::normal_distribution<> dist(2, 2);
std::map<int, int> hist;
for (int n = 0; n < 10000; ++n) {
++hist[std::floor(dist(e2))];
}
for (auto p : hist) {
std::cout << std::fixed << std::setprecision(1) << std::setw(2)
<< p.first << ' ' << std::string(p.second/200, '*') << '\n';
}
}
tôi cung cấp một bộ tổng quát hơn của ví dụ này sang thế hệ số ngẫu nhiên trong C++ 11 trong câu trả lời của tôi để C++ random float number generation với một ví dụ trong Tăng cường và sử dụng rand()
.
Đoạn mã AC có sẵn trong một tương tự, [câu hỏi sau (bấm vào đây)] (http://stackoverflow.com/questions/17995894/normalgaussian-distribution-function-in-c/23609868#23609868) – jcollomosse