Chia từng số cho tổng có thể không mang lại cho bạn sự phân phối mà bạn muốn. Ví dụ: với hai số, cặp x, y = random.random (), random.random () chọn một điểm đồng nhất trên hình vuông 0 <= x <1, 0 <= y <1. Chia cho tổng "chiếu" điểm (x, y) lên đường thẳng x + y = 1 dọc theo đường thẳng từ (x, y) đến gốc tọa độ. Các điểm gần (0,5,0,5) sẽ có nhiều khả năng hơn các điểm gần (0,1,0,9).
Khi đó, đối với hai biến, x = random.random (), y = 1-x cho phép phân phối đồng đều dọc theo đoạn đường hình học.
Với 3 biến, bạn đang chọn một điểm ngẫu nhiên trong một khối lập phương và chiếu (theo hướng tâm, qua gốc tọa độ), nhưng các điểm gần tâm của tam giác sẽ có nhiều khả năng hơn các điểm gần các đỉnh. Các điểm kết quả nằm trên một tam giác trong mặt phẳng x + y + z. Nếu bạn cần lựa chọn không thiên vị các điểm trong tam giác đó, thì việc chia tỷ lệ là không tốt.
Vấn đề trở nên phức tạp ở thứ nguyên n, nhưng bạn có thể nhận được ước tính có độ chính xác thấp (nhưng độ chính xác cao, dành cho tất cả những người hâm mộ khoa học trong phòng thí nghiệm!) Bằng cách chọn đồng nhất từ tập hợp tất cả n bộ số nguyên không âm cộng lại N, và sau đó chia mỗi người trong số họ cho N.
Gần đây tôi đã nghĩ ra một thuật toán để thực hiện điều đó đối với n có kích thước khiêm tốn, N. Xem câu trả lời của tôi tại:
Tạo số ngẫu nhiên bị ràng buộc?