Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2011, 10:26   #1
Aladin
 
Регистрация: 17.05.2011
Сообщений: 9
По умолчанию генерация случайных чисел с заданным распределением

Здравствуйте. Нужна ваша помощь.
Необходим алгоритм или же пример. где реализована генерация случайных чисел с заданным распределением вероятности.
Aladin вне форума Ответить с цитированием
Старый 19.05.2011, 10:37   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

http://www.boost.org/doc/libs/1_46_1....distributions
Rififi вне форума Ответить с цитированием
Старый 19.05.2011, 11:15   #3
Aladin
 
Регистрация: 17.05.2011
Сообщений: 9
По умолчанию

Мне нужно для метода монте-карло, какой из них можно использовать
Aladin вне форума Ответить с цитированием
Старый 19.05.2011, 11:30   #4
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию

Покопайтесь по поводу Randomize() и random. Уверен, что помогут.
MeTeOpA вне форума Ответить с цитированием
Старый 19.05.2011, 11:54   #5
Aladin
 
Регистрация: 17.05.2011
Сообщений: 9
По умолчанию

Я делал через random программа считает правильно для простенькой функции
Код:
#include "stdafx.h"
#include "iostream"
#include "iomanip"
#include "math.h"

using namespace std;


double PI =  3.141592653589793;

 
double func(double x)
{
   return (x*x+1)/(x*x*x*x+x*x+1); 
}

double D(double min,double max)
{  
	return min + double(rand()) / RAND_MAX * (max - min); 
}


int main()
{
  double a,b,n,k,x,g,res,s=0,res2;
  a=0; b=1;
  cin>>n;
  k=b-a;
  for(int i=1; i<=n; i++)
  {
	  x=D(0,1);
	  s+=func(x);
  }
  res=1/n*k*s;

  res2=PI/(2.0*sqrt(3.0));
  cout<<setprecision(15)<<res<<endl;
  cout<<setprecision(15)<<res2<<endl;
}
Aladin вне форума Ответить с цитированием
Старый 19.05.2011, 11:57   #6
Aladin
 
Регистрация: 17.05.2011
Сообщений: 9
По умолчанию

Но если для более сложного уравнения, считает не правильно
Код:
#include "stdafx.h" 
#include "iostream" 
#include "iomanip" 
#include "math.h" 

using namespace std; 

double e = 2.71828183; 

double func(double x,double y) 
{ 
        return pow(e,-2*x-2*y)*sin(x+y); 
} 

double DoubleRand(double min,double max) 
    { return min + double(rand()) / RAND_MAX * (max - min); } 

int main() 
{ 
  double a,b,n,k,x,g,res,s=0,res2; 
  double PI = 3.141592653589793; 
  a=0; b=100; 
  cout<<"n = "; cin>>n; 
  k=b-a; 
  double y; 
  for(int i=1; i<=n; i++) 
  { 
      x=DoubleRand(0,100); 
      y=DoubleRand(0,100); 
      s+=func(x,y); 
  } 
  res=1/n*k*s; 

  res2=4.0/25.0; 
  cout<<setprecision(15)<<res<<endl; 
  cout<<setprecision(15)<<res2<<endl; 
}
Aladin вне форума Ответить с цитированием
Старый 19.05.2011, 22:53   #7
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию

Aladin, распишите пожалуйста что конкретно, на ваш взгляд работает неправильно... Не все же знают метод "Монте-Карло"...
MeTeOpA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генерация чисел нормальным распределением Athen Помощь студентам 5 03.04.2015 13:46
Генерация случайных чисел от -1 до 1 Shketer Общие вопросы Delphi 4 19.12.2009 23:43
Генерация Случайных Чисел Кирилл13 Помощь студентам 6 06.01.2009 10:31
Генерация последовательности псевдослучайных натуральных чисел с требуемым распределением вероятности elsin Фриланс 4 19.11.2008 08:57