У меня есть код, написанный в Matlab, и я написал его в C++, но я этого не делаю.
Проблема в том, что я использую случайную функцию в трех частях кода, когда я фиксирую случайные функции, оба кода дают одинаковый результат.
Если у кого-то есть идеи, пожалуйста, помогите мне.
Реализация функций rand
будет отличаться.
Вы можете управлять версией Matlab через rng
.
В конце C++ я предлагаю использовать функциональные возможности в (C++ 11) <random>
(или использовать версию Boost, если в вашей среде не хватает достойной библиотеки C++ 11 библиотеки). Я не могу проверить прямо сейчас, но похоже, что обе стороны поддерживают Mersenne Twister. С удачей, реализация будет генерировать одинаковые номера, если вы выберете одно и то же семя.
Я не могу проверить это сейчас, так как у меня нет Matlab.
Именно из-за функции rand()
вы получаете одинаковые числа. Лучше использовать srand (time(NULL));
прежде чем вы rand()
функцию rand()
. srand (time(NULL));
делает rand()
для создания разных выходов.
Для использования srand (time(NULL));
функции, вы должны добавить #include <time.h>
или #include <ctime>
в свой код.