Tôi muốn để có thể làm điều gì đó như thế này (rõ ràng là không hợp lệ C++):Tạo hai chuỗi độc lập ngẫu nhiên số (C++)
rng1 = srand(x)
rng2 = srand(y)
//rng1 and rng2 give me two separate sequences of random numbers
//based on the srand seed
rng1.rand()
rng2.rand()
Có cách nào để làm một cái gì đó như thế này trong C++? Ví dụ trong Java, tôi có thể tạo hai đối tượng java.util.Random với các hạt giống mà tôi muốn. Dường như chỉ có một trình tạo số ngẫu nhiên duy nhất trên toàn cầu trong C++. Tôi chắc chắn có những thư viện cung cấp chức năng này, nhưng dù sao để làm điều đó chỉ với C + +?
Vì các số được trả về bởi 'rand' là ngẫu nhiên (giả), tại sao bạn cần nhiều hơn một trình tạo? Lấy số 2n từ một trình tạo số ngẫu nhiên sẽ cho kết quả tương tự để nhận số n từ mỗi máy phát số ngẫu nhiên. –
@James: Hãy xem xét một mô phỏng xếp hàng với một nguồn ngẫu nhiên kiểm soát sự xuất hiện của các nhiệm vụ mới, và một nguồn ngẫu nhiên khác ảnh hưởng đến thời gian hoàn thành mỗi nhiệm vụ. Người ta có thể muốn lặp lại từng thử nghiệm nhiều lần, nhân rộng kịch bản "nhiệm vụ đến", nhưng với các thống kê "hoàn thành nhiệm vụ" khác nhau và điều đó đòi hỏi phải có nhiều RNG có thể được gieo độc lập. –
@Jim: Tôi đồng ý rằng nó có thể được sử dụng cho điều đó. Tôi nghĩ tốt hơn là nên nạp dữ liệu "ngẫu nhiên" theo cách thủ công thay vì dựa vào PRNG. –