Có, nhưng bạn cần khác hoặc đặt chính xác, cùng một PRNG trên mỗi nền tảng. std::default_random_engine engine
là một PRNG được xác định thực hiện. Điều đó có nghĩa là bạn có thể không nhận được cùng một PRNG trên mọi nền tảng. Nếu bạn không có cùng một thì cơ hội của bạn nhận được cùng một trình tự là khá thấp.
Những gì bạn cần là một cái gì đó như std::mt19937
được yêu cầu để cung cấp cho cùng một đầu ra cho cùng một hạt giống. Trong thực tế tất cả các máy phát điện được xác định trong <random>
bên cạnh std::default_random_engine engine
sẽ tạo ra cùng một đầu ra khi sử dụng cùng một hạt giống.
Điều khác bạn cần biết là std::uniform_int_distribution
cũng được thực hiện được xác định. Công thức mà nó phải sử dụng được định nghĩa nhưng cách thức mà nó đạt được được để lại cho người triển khai. Điều đó có nghĩa là bạn có thể không có được kết quả chính xác như nhau. Nếu bạn cần tính di động, bạn sẽ cần phải cuộn bạn phân phối riêng hoặc nhận được một bên thứ ba mà sẽ luôn luôn giống nhau bất kể nền tảng.
Vì 'std :: default_random_engine' không phải là cùng một PNRG trên mỗi hệ thống, sử dụng' std :: mt19937'. –
Tôi tin rằng một công cụ ngẫu nhiên cụ thể như 'std :: mt19937' là bắt buộc để cung cấp cho cùng một số cho một hạt giống cụ thể nhưng tôi không nghĩ rằng phân phối là. Vì vậy, bạn có thể phải viết phân phối của riêng bạn. –