#c #matlab #random
#c #matlab #Случайный
Вопрос:
У меня есть код, написанный в Matlab, и я написал его на C , но я не считаю, что это не дает тех же результатов.
Проблема в том, что я использую случайную функцию в 3 частях кода, когда я фиксирую случайные функции, оба кода дают одинаковый результат.
Если у кого-либо есть какие-либо идеи, пожалуйста, помогите мне.
Комментарии:
1. Очевидно, что две функции случайных чисел дают разные последовательности.
2. но если я запускаю программу несколько раз в matlab, она дает результаты, близкие друг к другу. итак, есть ли способ сделать так, чтобы 2 случайные функции давали близкие результаты?
Ответ №1:
Реализация rand
функций будет отличаться.
Вы можете управлять версией Matlab через rng
.
В конце C я предлагаю использовать функциональность в (C 11) <random>
(или использовать версию Boost, если в вашей среде отсутствует достойная поддержка библиотеки C 11). Я не могу протестировать прямо сейчас, но, похоже, обе стороны поддерживают Mersenne Twister. Если повезет, реализация сгенерирует те же числа, если вы выберете одно и то же начальное значение.
Я не могу проверить это сейчас, так как у меня здесь нет Matlab.
Ответ №2:
Это потому rand()
, что функция дает вам одинаковые числа. Лучше использовать srand (time(NULL));
перед вызовом rand()
функции. srand (time(NULL));
позволяет rand()
создавать разные выходные данные.
Для использования srand (time(NULL));
функции вы должны добавить #include <time.h>
или #include <ctime>
в свой код.
Комментарии:
1. Я использовал srand(time(NULL)) только один раз в коде, перед первой функцией rand(), которую я использовал в коде. как я могу сделать результат в matlab и c одинаковым????
2. Я не понял, что вы имеете в виду. Однако я думал, что ваша проблема в C .
3. Я имею в виду, что я использовал srand(time(Null)) для того, чтобы заставить rand() выдавать разные выходные данные. Я хочу сохранить matlab и c случайными, но я хочу получить аналогичные результаты после запуска кода из них.
4. Я думаю, что это невозможно. Для этой цели вы должны ввести одинаковые входные данные в C и Matlab.
rand()
функция выдает разные выходные данные.5. но это не мой первый код, я пробовал раньше разные коды в matlab и c , которые содержат случайную функцию, и она дает похожие результаты. но в этом коде у меня есть определенный цикл, когда я ввел его один раз, я получил тот же результат из matlab и c , но если я ввел его n раз, результаты стали другими. спасибо за ваши усилия