Gần đây tôi đã vấp phải vấn đề này. Ngây thơ tôi nghĩ rằng bất kỳ sự chuyển đổi nào từ đồng phục đều hoạt động, vì vậy tôi đã cắm một chuỗi Sobol 1D (và Halton) như thể trình tự tạo một số ngẫu nhiên thành một std::normal_distribution<>
biến thiên. Thật ngạc nhiên, nó không hoạt động, rõ ràng nó tạo ra một phân phối không bình thường.
Ok, sau đó tôi đã sử dụng chức năng Numerical Recipes Phiên bản thứ ba Chương 7.3.9 Normal_dev
để tạo các số bình thường từ các chuỗi Sobol hoặc Halton theo phương pháp "Tỷ lệ đồng phục" và nó đã thất bại theo cách tương tự. Sau đó, tôi nghĩ, ok, nếu bạn nhìn vào mã, phải mất hai số ngẫu nhiên thống nhất để tạo hai số ngẫu nhiên phân phối bình thường. Có lẽ nếu tôi sử dụng chuỗi 2D Sobol (hoặc Halton) thì nó sẽ hoạt động. Chà, nó lại thất bại.
Tôi đã nhớ về "phương pháp Box-Muller" (được đề cập trong các bình luận) và vì nó có cách hiểu hình học hơn nên tôi mặc dù nó có thể hoạt động. Vâng, nó đã làm việc! Tôi đã rất vui mừng khi bắt đầu làm thử nghiệm khác, phân phối trông bình thường.
Vấn đề tôi thấy là phân phối không tốt hơn ngẫu nhiên, về mặt điền, vì vậy tôi hơi thất vọng, nhưng sẵn sàng công bố kết quả.
Sau đó, tôi đã thực hiện một tìm kiếm sâu hơn (bây giờ tôi biết phải tìm gì) và hóa ra đã có một bài viết về chủ đề này: http://www.scTHERirect.com/science/article/pii/S0895717710005935
Trong bài báo này, nó thực sự được tuyên bố
Hai phương pháp nổi tiếng được sử dụng với số giả ngẫu nhiên là BoxTHER Muller và phương pháp biến đổi nghịch đảo. Một số nhà nghiên cứu và kỹ sư tài chính đã tuyên bố rằng việc sử dụng phương pháp Box siêu Muller với các trình tự sai lệch thấp là không chính xác, và thay vào đó, nên sử dụng phương pháp biến đổi ngược. Trong bài báo này, chúng tôi chứng minh rằng phương pháp Boxer Muller có thể được sử dụng với trình tự sai lệch thấp và thảo luận khi nào việc sử dụng nó thực sự có lợi.
Vì vậy, kết luận chung là đây:
1) Bạn có thể sử dụng Box-Muller trên các chuỗi chênh lệch thấp 2D để thu được các chuỗi phân phối thông thường. Nhưng một vài thí nghiệm của tôi dường như cho thấy rằng sự khác biệt / không gian thấp, ví dụ như các thuộc tính điền bị mất trong chuỗi biến đổi thông thường.
2) Bạn có thể sử dụng phương pháp nghịch đảo, có lẽ các thuộc tính lấp đầy không gian / chênh lệch thấp sẽ được giữ nguyên.
3) Không thể sử dụng tỷ lệ đồng phục.
EDIT : https://mathoverflow.net/a/144234 này chỉ ra cùng kết luận.
Tôi đã thực hiện một minh họa (hình đầu tiên (Tỷ lệ đồng phục trên Sobol) cho thấy rằng phân phối thu được không bình thường nhưng ohters (Box-Muller và ngẫu nhiên để so sánh) là:
EDIT2:
Điểm chính là, ngay cả khi bạn tìm thấy một phương pháp có thể biến đổi "phân phối" của chuỗi sai lệch thấp, thì rõ ràng là bạn sẽ bảo toàn các thuộc tính điền tốt. Vì vậy, bạn không tốt hơn với một phân phối bình thường thực sự ngẫu nhiên (tiêu chuẩn). Tôi vẫn chưa tìm thấy một phương pháp có sự khác biệt thấp và nó vẫn lấp đầy một cách độc đáo với một phân phối không đồng đều. Tôi đặt cược phương pháp như vậy là rất không rõ ràng và có lẽ là một vấn đề mở.