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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2011, 12:22   #1
ALIEN010
 
Регистрация: 22.09.2011
Сообщений: 6
По умолчанию Проблема

Люди помогите написать програму:
Изображения
Тип файла: bmp Безымянный.bmp (24.4 Кб, 140 просмотров)
ALIEN010 вне форума Ответить с цитированием
Старый 29.09.2011, 12:39   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

решение проблемы
counter вне форума Ответить с цитированием
Старый 29.09.2011, 12:50   #3
ALIEN010
 
Регистрация: 22.09.2011
Сообщений: 6
По умолчанию

)))ну эт проблему неришыт
ALIEN010 вне форума Ответить с цитированием
Старый 29.09.2011, 12:57   #4
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

а ты пробовал? тут таких как ты с однотипными вопросами тысячи...
counter вне форума Ответить с цитированием
Старый 29.09.2011, 13:14   #5
ALIEN010
 
Регистрация: 22.09.2011
Сообщений: 6
По умолчанию

вот я сделал но есть ошибки

Код:
#include <stdio.h>
#include<cmath>
#include <fstream>
#include <iostream>

const int VOLUME=1000;
float get_pareto(float A, float B);
int main()
{
   FILE *out;
         float A,B, result;
               out=fopen("out_pareto.txt","wt");
      A=0.4;
      B=0.2;
   srand((unsigned)time(0));/*Инициализация датчика равномерного распределения*/
   for(int i=1;i<VOLUME;i++)  

{
/*вызов этой функции возвращает случайное число,
 полученное с помощью распределения Парето*/


result = get_pareto (A, B);
fprintf (out,"% f \ n", result);
}
fclose (out);
return (0);
}
float get_pareto(float A, float B) {
int r_num;
float root, right;
r_num = rand (); /*получение случайного целого числа*/
right = (float) r_num / RAND_MAX +1; /*проекция на интервал (0;1)*/
float u = (pow(1-exp),(A-right)/B); /*вычисление значения обратной функции*/
root = (A-B)*(ln(1-u));
return (root);

}

Последний раз редактировалось ACE Valery; 29.09.2011 в 21:32.
ALIEN010 вне форума Ответить с цитированием
Старый 29.09.2011, 13:34   #6
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Код:
#include <stdio.h>
#include <cmath>
#include <fstream>
#include <iostream>
#include <ctime>  

 const int VOLUME=1000;
 float get_pareto(float A, float B);

 int main()
 {
 FILE *out;
 float A,B, result;
 out=fopen("out_pareto.txt","wt");
 A=0.4;
 B=0.2;
 srand((unsigned)time(0));/*Инициализация датчика равномерного распределения*/
 for(int i=1;i<VOLUME;i++) 
 {
 /*вызов этой функции возвращает случайное число,
 полученное с помощью распределения Парето*/
 result = get_pareto (A, B);
 fprintf (out,"%f\n", result);
 }
 fclose (out);
 return (0);
 }


 float get_pareto(float A, float B) 
 {
 int r_num;
 float root, right;
 r_num = rand (); /*получение случайного целого числа*/
 right = (float) r_num / RAND_MAX +1; /*проекция на интервал (0;1)*/
 float u = 1-pow(B,(A-right)/B); /*вычисление значения обратной функции*/
 root = A-B*log(1-u);
 return root;
 }

1. time
2. возведение в степень
3. экспонента (раз уже всунунл ее сюда, то посмотри, что это)
4. логарифм
log - натуральный
log10 - десятичный

UPD:
твой вариант 4.
еще тут

тогда будет так

Код:
float u = 1-exp((A-right)/B); /*вычисление значения обратной функции*/

Последний раз редактировалось counter; 29.09.2011 в 13:42.
counter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с рамами/Проблема с ЖД DRAGGER Компьютерное железо 6 04.01.2009 23:37