Lấy mẫu thống nhất một cách ngẫu nhiên từ một đơn vị n-chiều simplex là cách ưa thích để nói rằng bạn muốn số n ngẫu nhiên màmẫu thống nhất một cách ngẫu nhiên từ một đơn vị n-chiều simplex
- họ là tất cả phi phủ định,
- chúng được tính thành một và
- mọi vectơ có thể có của n số không âm có tổng là một số có khả năng giống nhau.
Trong trường hợp n = 2, bạn muốn lấy mẫu thống nhất từ phân đoạn của dòng x + y = 1 (tức là y = 1-x) ở góc phần tư dương. Trong n = 3 trường hợp bạn đang lấy mẫu từ phần hình tam giác của mặt phẳng x + y + z = 1 có nghĩa là trong chòm sao bát nhân tích cực của R3:
(Hình ảnh từ http://en.wikipedia.org/wiki/Simplex.)
Lưu ý rằng chọn n số ngẫu nhiên đồng nhất và sau đó bình thường hóa chúng để chúng tổng hợp thành một không hoạt động. Bạn kết thúc với một thiên vị đối với số ít cực đoan hơn.
Tương tự, chọn số ngẫu nhiên đồng nhất n-1 và sau đó lấy số thứ n là một trừ đi tổng số tiền cũng giới thiệu sai lệch.
Wikipedia cung cấp hai thuật toán để thực hiện điều này một cách chính xác: http://en.wikipedia.org/wiki/Simplex#Random_sampling (Mặc dù câu hỏi thứ hai hiện chỉ đúng trong thực tế, chứ không phải theo lý thuyết. Tôi hy vọng làm sạch hoặc làm rõ nó khi tôi hiểu điều này tốt hơn. Ban đầu tôi bị mắc kẹt trong một "CẢNH BÁO: giấy như vậy và tuyên bố sau đây là sai" trên trang Wikipedia đó và một người nào khác biến nó thành "chỉ hoạt động trong thực tế" báo trước.)
Cuối cùng, câu hỏi: Bạn xem xét việc thực hiện tốt nhất việc lấy mẫu simplex trong Mathematica (tốt nhất là với xác nhận thực nghiệm là nó đúng)?
câu hỏi liên quan
Dường như có một số phương pháp hoạt động tốt - sự khác biệt thực sự duy nhất ở tốc độ và khả năng đọc. Tiêu chí của bạn khác với 'tốt nhất' là gì? – zdav
Tốc độ và khả năng đọc là tiêu chí tuyệt vời! Conciseness có thể là khác. Nếu bạn có một thực hiện có bất cứ điều gì ở tất cả đi cho nó, đi trước và gửi nó như là một câu trả lời. – dreeves
Tôi nghĩ rằng cảnh báo Wikipedia là một chút không có thật; các tác giả của bài báo được lo lắng về sự đồng nhất hoàn hảo cho một phiên bản * discretized * của vấn đề này. Thuật toán thứ 2 được mô tả là hoàn toàn chính xác từ quan điểm toán học, và nên hoạt động tốt trong thực tế nếu bạn chuẩn bị xem 'số dấu phẩy động ngẫu nhiên từ [0, 1]' như là một xấp xỉ đủ tốt để 'ngẫu nhiên thực số từ [0, 1] '. –