Tôi đang cố gắng sử dụng C++ STD TechnicalReport1 phần mở rộng để tạo ra các số sau một phân phối chuẩn, nhưng mã này (chuyển thể từ this article):C++ TR1: cách sử dụng phân phối bình thường như thế nào?
mt19937 eng;
eng.seed(SEED);
normal_distribution<double> dist;
// XXX if I use the one below it exits the for loop
// uniform_int<int> dist(1, 52);
for (unsigned int i = 0; i < 1000; ++i) {
cout << "Generating " << i << "-th value" << endl;
cout << dist(eng) << endl;
}
chỉ in 1 "Tạo ..." log nhắn , sau đó không bao giờ thoát khỏi vòng lặp! Nếu tôi sử dụng bản phân phối mà tôi đã nhận xét thay vào đó, nó sẽ chấm dứt, vì vậy tôi tự hỏi tôi đang làm gì sai. Bất kỳ ý tưởng?
Cảm ơn rất nhiều!
cảm ơn người đàn ông, nó hoạt động như một say mê, nhưng tôi tự hỏi tại sao với động cơ này nó hoạt động, và không phải với khác .. – puccio
Rõ ràng sự khác biệt duy nhất là bạn sử dụng máy phát điện số mt19937 trong khi Jagannath sử dụng std :: tr1 :: ranlux64_base_01. Về mặt logic, tôi đoán lỗi có thể là do bạn đang triển khai đối tượng mt19937 (bản ngã mà tôi chưa từng nghe trước đây, thx cho :-)) đó không phải là một phần của thư viện std. –
Có thể vector hóa vòng lặp như vậy khi vẽ các số ngẫu nhiên không? Tôi nhớ rằng bạn không thể vector hóa một vòng lặp có một cuộc gọi hàm. – Lindon