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

#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 раз, результаты стали другими. спасибо за ваши усилия