Nếu tôi hiểu bạn một cách chính xác, chỉ các điểm trong một số lượng nhỏ không gian n chiều đáp ứng các ràng buộc của bạn.
Ràng buộc đầu tiên của bạn ràng buộc nó vào bên trong của một siêu cầu, điều này làm tôi nhớ đến câu hỏi tổng hợp. Thuật toán "Điểm ngẫu nhiên đồng nhất trên quả cầu" và Làm thế nào để tạo các điểm phân bố đồng đều trong bóng đơn vị 3-d?
Ràng buộc thứ hai cắt một chút ra khỏi siêu cầu và các ràng buộc khác sẽ giảm dần ở âm lượng đáp ứng các ràng buộc của bạn.
Tôi nghĩ rằng điều đơn giản nhất để làm là một trong những cách tiếp cận được đề xuất bởi FAQ:
- chọn một số hộp giới hạn liên kết trục tùy ý mà chúng tôi chắc chắn chứa toàn bộ âm lượng. Trong trường hợp này, -c <a_1 <c, -c <a_2 <c, ... -c <a_n <c chứa toàn bộ âm lượng bị ràng buộc, vì nó chứa siêu âm được mô tả bởi ràng buộc đầu tiên và các ràng buộc khác tiếp tục thay đổi đi ở âm lượng đó.
- Thuật toán thống nhất chọn các điểm trong suốt khung giới hạn đó. Trong trường hợp này, thuật toán đặt độc lập mỗi tọa độ của một vectơ ứng cử viên thành một số ngẫu nhiên phân phối đồng nhất độc lập từ -c đến + c. (Tôi giả sử bạn muốn các điểm được phân phối với mật độ bằng nhau trong tập này. Tôi cho rằng bạn có thể làm cho thuật toán chọn một số hoặc tất cả các tọa độ với phân phối Poisson hoặc một số phân phối không đồng nhất khác, nếu bạn có lý do nào đó để làm điều đó).
- Khi bạn có một vectơ ứng cử viên, hãy kiểm tra từng ràng buộc. Nếu nó không thành công, hãy quay lại và chọn một điểm khác.
- Một khi bạn có một vector ứng cử viên, lưu trữ nó ở đâu đó để sử dụng sau.
- Nếu bạn không có đủ các vectơ được lưu trữ, hãy quay lại và thử tạo một vectơ khác.
Với trình tạo số ngẫu nhiên đủ chất lượng cao, điều này cung cấp cho bạn một bộ tọa độ được lưu trữ đáp ứng các tiêu chí của bạn với mật độ đồng nhất (dự kiến).
Than ôi, nếu bạn có chiều thứ n tương đối cao (nghĩa là, nếu bạn xây dựng từng vectơ ra khỏi danh sách tọa độ tương đối dài), hình cầu được ghi (ít hơn nhiều so với thể tích giảm dần của bạn) có một phần nhỏ đáng ngạc nhiên trong tổng thể tích tổng hộp giới hạn, do đó, nó có thể cần phải thực hiện nhiều lần lặp, hầu hết chúng tạo ra các điểm bị từ chối bên ngoài vùng bị ràng buộc của bạn, trước khi tìm thấy một điểm bên trong vùng bị ràng buộc của bạn. Vì máy tính ngày nay khá nhanh, liệu có đủ nhanh?