Member 13285119 Ответов: 4

У меня есть код марсенна твистера что я могу сделать


#include <iostream>
#include "mt.h"

using namespace std;

int main (int argc, char** argv) {
    int N = 1000000;
    double ran[N];
    double mean = 0.0;

    // Initialize a Mersenne Twister
    MersenneTwister mt;
    mt.print();

    // Take N draws from Uniform(0,1)
    for (int i = 0; i < N; i++) {
        ran[i] = mt.random();
    }

    // Calculate the mean
    for (int i = 0; i < N; i++) {
        mean += ran[i];
    }
    mean /= N;

    cout << "Sample mean of " << N << "draws:" << mean << endl;

    return EXIT_SUCCESS;
}


Что я уже пробовал:

у меня есть код marsenne twister и я хочу его в c

4 Ответов

Рейтинг:
2

RickZeeland

Там вроде бы есть какие-то инструменты, но, наверное, не по вашему вкусу, смотрите вот это: Как преобразовать код C++ в C - Stack Overflow[^]
Онлайн-версия (сомневаюсь, что она работает): Тест-Драйв Comeau C/C++ Онлайн[^]


Рейтинг:
0

KarstenK

Нет их-это не онлайн-конвертер. В C у вас нет никаких классов, и поэтому вы должны разложить свой класс MersenneTwister.

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

struct MersenneTwister {
  int data;
  // and so on
} _MersenneTwister;

//prototyping
void init( _MersenneTwister* twister ); // set some default values
void print( _MersenneTwister* twister ); //use
void random( _MersenneTwister* twister ); //


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


Рейтинг:
0

Javier Luis Lopez

Есть 2 варианта. Первый из них дан Карстенком с использованием структур.
Во-вторых, переписать код с помощью C. Проблема в том, что C++ является объектно-ориентированным языком, поэтому функции, переменные и другие классы или объекты инкапсулируются в классы с публичной и частной частями и передаются наследованию, так что до тех пор, пока структура полностью отличается, нет прямого способа создать автоматическую систему, которая делает это преобразование, если только программа не очень проста и не выполняет ряд условий.


Рейтинг:
0

CPallini

Преобразование вашего кода в C это почти тривиально.
Менее тривиальным является обеспечение реализации Marsenne twister.
К счастью, вы можете найти некоторые C имплантации свободно доступны в интернете. Смотрите, например: Mersenne Twister в C, C++, C#[^].


Nelek

Тебя одурачил спамер... этому вопросу уже больше года ;)

CPallini

Да. Вы правы.