Tôi đang gặp sự cố khi tạo các số ngẫu nhiên không tuân theo phân bố đồng nhất rời rạc.Số ngẫu nhiên dựa trên xác suất
Ví dụ: giả sử tôi có 5 số (để đơn giản), xác suất số k được tạo sẽ là k/15. (K = 1-5)
Ý tưởng của tôi là để tạo ra một số j ngẫu nhiên sử dụng rand(), và nếu con số này j là:
1 => sau đó số 1 được tạo ra
2 hoặc 3 => num 2
4 hoặc 5 hoặc 6 => num 3
7 hoặc 8 hoặc 9 hoặc 10 => num 4
11 hoặc 12 hoặc 13 hoặc 14 hoặc 15 => num 5
Bây giờ hãy chia tỷ lệ này để tạo ra 1-10, 1-100, 1-1000. Điều này có hoạt động theo cách tôi dự định không? Tôi đã xây dựng một vòng lặp mà khá nhiều hiện điều này mỗi khi một số cần phải được tạo ra, tôi nghĩ rằng nó có thể không hiệu quả kể từ khi nó đi lên cho đến khi nó tìm thấy số j tạo ra trong một trong các phạm vi ... Điều gì có thể là một cách tốt hơn để làm điều này?
CHỈNH SỬA: hoặc có thể tạo một mảng một lần với số thích hợp và sau đó kéo ra bằng rand() giải pháp tốt hơn?
có nhiều câu hỏi tương tự trên SO ..... –
http://www.cplusplus.com/reference/random/discrete_distribution/discrete_distribution/ –
http://stackoverflow.com/questions/9432226/how- related liên quan do-i-select-a-range-of-values-in-a-switch-statement –