случайная функция в C ++ и Matlab

0

У меня есть код, написанный в Matlab, и я написал его в C++, но я этого не делаю.

Проблема в том, что я использую случайную функцию в трех частях кода, когда я фиксирую случайные функции, оба кода дают одинаковый результат.

Если у кого-то есть идеи, пожалуйста, помогите мне.

  • 1
    Очевидно, что две функции случайных чисел дают разные последовательности.
  • 0
    но если я запускаю программу несколько раз на matlab, она дает результаты рядом друг с другом. так есть ли возможность, чтобы 2 случайная функция давала близкие результаты?
Теги:
random

2 ответа

3

Реализация функций rand будет отличаться.

Вы можете управлять версией Matlab через rng.

В конце C++ я предлагаю использовать функциональные возможности в (C++ 11) <random> (или использовать версию Boost, если в вашей среде не хватает достойной библиотеки C++ 11 библиотеки). Я не могу проверить прямо сейчас, но похоже, что обе стороны поддерживают Mersenne Twister. С удачей, реализация будет генерировать одинаковые номера, если вы выберете одно и то же семя.

Я не могу проверить это сейчас, так как у меня нет Matlab.

0

Именно из-за функции rand() вы получаете одинаковые числа. Лучше использовать srand (time(NULL)); прежде чем вы rand() функцию rand(). srand (time(NULL)); делает rand() для создания разных выходов.

Для использования srand (time(NULL)); функции, вы должны добавить #include <time.h> или #include <ctime> в свой код.

  • 0
    Я использовал srand (time (NULL)) только один раз в коде, перед первой функцией rand (), которую я использовал в коде. Как я могу сделать результат в Matlab и C ++ быть одинаковыми ????
  • 0
    Я не понимаю твоего смысла. Однако я думал, что ваша проблема в C ++.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню