Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как правильно сделать генерацию чисел 
:(
    Опции темы
orsobruno
Дата 13.2.2011, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.1.2011

Репутация: нет
Всего: нет



Помогите не математику.

Что дано. Конечное множество событий X, допустим 5. Значения также известны. Известно мат ожидание. 

Неизвестно распределение вероятностей. Собственно вопрос, не могу понять, будет ли влиять значение дисперсии на результаты. Допустим при 1 млн. генерации чисел, будет ли разница для разных вероятностей соответствующих событий. 

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

Или я совсем во всем не прав?


Всем заранее спасибо!

Это сообщение отредактировал(а) orsobruno - 13.2.2011, 20:25
PM MAIL   Вверх
alexvs11
Дата 13.2.2011, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 21.8.2010

Репутация: 6
Всего: 10



Цитата(orsobruno @  13.2.2011,  20:12 Найти цитируемый пост)
Неизвестно распределение вероятностей. Собственно вопрос, не могу понять, будет ли влиять значение дисперсии на результаты. Допустим при 1 млн. генерации чисел, будет ли разница для разных вероятностей соответствующих событий. 

дисперсия определяет возможное отклонение св от матожидания
но при достаточно большой выборке (1 млн у вас) статистические значения моментов (те те что вычислены по выборке) будут сходиться к действительным моментам
если речь идет о том, что вы хотите определить вероятность появления события X, то тут тоже все хорошо
Цитата(orsobruno @  13.2.2011,  20:12 Найти цитируемый пост)
Ведь, насколько я понимаю, при уменьшении величины среднеквадратичного отклонения процесс становится менее случайным.?

при нулевом отклонении св становится вовсе неслучайной

Цитата(orsobruno @  13.2.2011,  20:12 Найти цитируемый пост)
Значит ли это, что становится более вероятным что выборка будет более близка к мат ожиданию, чем при распределении с большей дисперсией?

да, но дело в том, что при увеличением размера выборки (колва экспериментов) можно приблизить моменты сколь угодно точно

Это сообщение отредактировал(а) alexvs11 - 13.2.2011, 20:56
PM MAIL   Вверх
orsobruno
Дата 13.2.2011, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.1.2011

Репутация: нет
Всего: нет



Спасибо. И все же как правильно вычислить вероятности, чтобы максимально приблизить результаты выборки к мат ожиданию, я делаю просто
Код


// мат ожидание в процентах
const double gain = 98;

// все значения >0 
int w[] = {3, 30, 300, 3000};

vector<double> cumulative;

vector<int> weight(w, w + sizeof(w) / sizeof(int));

vector<double> prob;
prob.reserve(weight.size());

double total = 0;

    for (vector<int>::iterator it = weight.begin(); it != weight.end(); ++it )
    {
        total+= 1/(double)*it;
    }

    for (vector<int>::iterator it = weight.begin(); it != weight.end(); ++it )
    {
        prob.push_back( 1/((double)(*it) * total) );

    }
    total=0;
    for (unsigned int i = 0; i < weight.size(); ++i)
    {
        total+=(double)weight[i]*prob[i];
    }

    double koeff = (gain/100)/total;
    
    total = 0;

    for (unsigned int i = 0; i < weight.size(); ++i)
    {
        prob[i] = koeff*prob[i];
        total+=prob[i];
    }
        // add wining 
    double lose = 1-total;
    prob.push_back(lose);

       // затем использую распределение в генераторе
    std::partial_sum(prob.begin(), prob.begin() + prob.size(),
                    std::back_inserter(cumulative));

         boost::mt19937 gen;
....


Но по серии тестов заметил, что если назначить вероятности используя меньшее среднеквадратич отклонение, результаты выборки более близки к мат ожиданию

Это сообщение отредактировал(а) orsobruno - 13.2.2011, 21:23
PM MAIL   Вверх
alexvs11
Дата 13.2.2011, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 21.8.2010

Репутация: 6
Всего: 10



поясните вашу программу, я только понял, что prob - плотность вероятности, а cumulative видимо функция распределения
как они рассчитываются я не понял

Добавлено через 30 секунд
что за веса собсно
PM MAIL   Вверх
orsobruno
Дата 13.2.2011, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.1.2011

Репутация: нет
Всего: нет



weight - это значения случайной величины.

сначала, исходя из веса, я рассчитываю вероятности, исходя из того что мат ожидание = 1

3*prob[1]+30*prob[2]+300*prob[3]+3000*prob[5] = 1

так как пользователь может выбрать Мат ожидание (у меня - gain), я корректирую вероятности под текущий gain.
Так как всегда существует еще значение случайной величины = 0, 

3*prob[1]+30*prob[2]+300*prob[3]+3000*prob[5] +0*prob[6] = gain

добавляю в массив вероятностей его. Далее функция распределения, далее генератор.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0592 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.