Tôi đã thử std::mt19937 gen(2007)
bằng C++ và RandStream.create('mt19937ar','seed',2007)
trong Matlab. Tôi cũng đã thử các cấu trúc khác nhau, nhưng tôi không thể tìm thấy một cấu trúc hạt giống cụ thể để tìm các số ngẫu nhiên giống nhau giữa Matlab và C++. Làm thế nào tôi có thể xử lý này?Có giống nào cho Matlab Random và C++ Random không?
Trả lời
Bạn muốn trình tạo ngẫu nhiên xác định và hoạt động theo cùng một cách trong hai triển khai khác nhau.
Không có đảm bảo rằng Matlab và C++ :: triển khai std sẽ tạo ra kết quả tương tự. Mặc dù nó sẽ là hợp lý để nghĩ rằng họ nên - nó là cùng một thuật toán sau khi tất cả. Theo Wikipedia có những hương vị cho việc triển khai. Đáng chú ý nhất là sự khác biệt giữa 32 và 64 bit thực hiện mà tạo ra kết quả khác nhau.
Để khắc phục trở ngại này, hãy tạo các số trong một công cụ và sau đó sử dụng cùng một trình tự trong một công cụ khác. Hoặc sử dụng thuật toán của riêng bạn - một số ý tưởng here.
Sự khác biệt (rất có thể) bắt nguồn từ việc sử dụng các thống nhất phân phối giả ngẫu nhiên số trong C++, trong khi MATLAB mã sử dụng thường phân phối giả ngẫu nhiên số. Hãy thử rand
/randi
thay vì randn
trong mã MATLAB (tức là các số nguyên được phân bổ không đúng định dạng thay vì đôi được phân phối thông thường).
Thông tin thêm về phía MATLAB của câu chuyện: http://www.mathworks.com/help/matlab/random-number-generation.html
- 1. C++ tương đương với Random mới (hạt giống) trong C#
- 2. AVAudioPlayer và Random Chậm
- 3. Seeding SQLite RANDOM()
- 4. Haskell Random from Datatype
- 5. Swift 2.0 Random EXC_BAD_ACCESS
- 6. Mysql 1 Random Row
- 7. Simple 2D Random walk
- 8. Làm thế nào để thực hiện Random (a, b) chỉ với Random (0,1)?
- 9. Độ chính xác không đổi và <random>
- 10. Tại sao lớp Random không tĩnh?
- 11. /dev/random return luôn cùng một chuỗi
- 12. C++ 11: Cách đặt hạt giống bằng cách sử dụng <random>
- 13. Random Number Generation - Cùng Số trở
- 14. Facebook PHP api: "không có bộ url" - random
- 15. Rừng R Random Tầm quan trọng Variable
- 16. Có một số mẫu trên phương thức Random() không?
- 17. Random ArrayIndexOutOfBoundsException trong ứng dụng JavaFX
- 18. Kích thước mẫu trong Random Forest Regression
- 19. Chất lượng của hàm random() của PostgreSQL?
- 20. Python Scikit Random Forest Regressor Lỗi
- 21. Tương đương với Windows/dev/random
- 22. Thư viện <random> có trong C++ 11 di động không?
- 23. Có lý do nào để viết `new Random()` từ Java 8 không?
- 24. tập tin io với/dev/random mất quá lâu
- 25. Làm thế nào để có được bản ghi RANDOM từ mỗi thể loại trong MySQL?
- 26. (Ngẫu nhiên) trong Common Lisp Not So Random?
- 27. Chọn Đối Strings Random Trong Commodore 64 BASIC
- 28. Hàm random() bên trong - Làm thế nào nó được thực hiện?
- 29. Tạo số ngẫu nhiên hiệu quả với C++ 11 <random>
- 30. Làm cách nào để ngăn thuật toán Random Walk khỏi bị 'kẹt'?
Bạn sử dụng hàm nào trong MATLAB để nhận số ngẫu nhiên? –
Tôi đang sử dụng các chức năng 'gamrnd' và' randn' trong MATLAB. – taha