Tại sao kết quả phân phối chuẩn không bắt buộc phải nhất quán giữa các lần triển khai? Kết quả của các trình tạo số ngẫu nhiên giả là mặt khác được uỷ quyền giống hệt nhau.stl phân phối ngẫu nhiên và tính di động
Ví dụ: phần sau sẽ gần như chắc chắn in một cái gì đó khác nhau cho mọi triển khai thư viện chuẩn khác nhau.
std::mt19937 random {100};
std::normal_distribution<> dist;
std::cout << dist(random);
Giả sử tôi muốn tạo thủ tục và muốn giống hệt nhau để tạo ra kết quả giống nhau trên nền tảng và trình biên dịch. Tôi không thể làm điều đó với stl. Tôi phải "thoái lui" để sử dụng boost. Tại sao đây không phải là một khiếm khuyết?
Đây không phải là câu trả lời, đó chỉ là điều cần suy nghĩ. Đối với nhiều bản phân phối, có nhiều cách để có được các giá trị mong muốn. Phân phối bình thường có thể sử dụng phép biến đổi hộp-muller, hoặc một hàm lỗi (đệ quy hoặc mở rộng bằng tay). Cả hai hàm sử dụng này đều sử dụng các hàm khác (chẳng hạn như cosin, sin, logarit, hàm lỗi, tích phân, căn bậc hai ...). Thật khó để nói phương pháp nào là tốt nhất (thời gian so vớichính xác) và có thể được tối ưu hóa tốt nhất. Có lẽ trong C++ 14 khi mọi người trở nên quen thuộc hơn với các bản phân phối và triển khai này, một tiêu chuẩn sẽ được thực thi. – druckermanly
Ồ, và thậm chí biến đổi hộp-muller có triển khai khác nhau (cực, cartesian). Tấn cách để tấn vui vẻ? – druckermanly
@ user2899162 bạn thực sự có lý do chính xác, tôi trích dẫn đề xuất trong câu trả lời của tôi. –