Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Рандомное распределения чисел - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычисление производной из функции http://www.cyberforum.ru/cpp-beginners/thread188797.html
Помогите с курсовым, пожалуйста! необходимо в спецификации написать теорию по алгоритмам и структурам данных. Программа пишется - вычисление производной из функции. Но что написать в спецификации по...
C++ Работа со stream потоками+указатели Всем привет. Есть функция осуществляющая вывод инфы с помощью потоков (cin, cout ...). Эту же инфу нужно выводить и в файл, поэтому хочу модернизировать функцию так чтобы передавать ей указатель на... http://www.cyberforum.ru/cpp-beginners/thread188786.html
C++ Программирование на С
Может кто помочь составить код по заданию ? "Написать программу,которая проверяла бы ,упорядочен ли массив по неубыванию (хi<=xi+1), по невозрастанию (xi>=xi+1) или не упорядочен вообще. Привести...
вывод в строку C++
превет всем. была поставлена такая задача: есть текстовый файл в котором находится текст, считать этот текст с файла и заменить все пробелы в нем на номер пробела. реализовал так:...
C++ Ошибка в коде http://www.cyberforum.ru/cpp-beginners/thread188759.html
Задача: Получить максимальную по длине неубывающую под последовательность цифр введенного числа. Ошибка возникает в случае если эта под последовательность начинается с первого элемента массива. То...
C++ Информатика Здравствуйте..Помогите пожалуйста с лабораторными по информатике?На языке С++?СМОЖЕТЕ КТО НИБУДЬ ПОМОЧЬ? Ребята вот ссылка лабы скачать посмотрите?Если сможете скажите пожалуйста?Очень вам... подробнее

Показать сообщение отдельно
LpsoldierMike
1 / 1 / 0
Регистрация: 10.11.2010
Сообщений: 81

Рандомное распределения чисел - C++

10.11.2010, 00:49. Просмотров 1684. Ответов 4
Метки (Все метки)

Доброго вам времени суток. Ребята, помогите с программой, собственно, нужно создать 12к равномерно распределенных чисел, потом из этих 12к получить 1к нормально распределенных. 1к чисел делим на пары, по номерам, 1-ый, 2-ой, далее 3-тий, 4-тый, и так далее и принять что эти числа координаты точек. Далее нужно по теореме Монте-Карло найти площадь фигуры , как это делается?. Моя фигура 4-х угольник, произвольный но выпуклый, (координаты можно задать жестко, можно с клавиатуры), теперь ее вписываем в какую то фигуру, например в квадрат. Бросаем полученные 5к точек, и проверяем попала ли точка в фигуру или нет. Отношение успешных попаданий к всем точкам даст в % площадь.

теперь собственно проблема. Программа почему то не хочет давать мне 1к нормально распределенных чисел, эти числа находятся так :
12 чисел равномерно распределенных суммируются, и от суммы отнимаем 6, в результате этого получаем 1 число нормально распределенное.

Принадлежность точки вписанной фигуре реализовывается проверкой, "с какой стороны точка относительно вектора". Достаточно 3-х условий, которые скажут что точка справа от вектора и тогда можно сказать что точка в фигуре, разумеется, векторы фигуры должны быть напрямлены в одну сторону, то есть начало первого вектора должно быть в одной точке с концом четвертого. Даю код, помогите пожалуйста, уже неделю мучаюсь, ничего не выходит, если знаете другие методы проверки принадлежности точки фигуре, скажите буду очень рад

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <cstdlib>
#include <iostream>
#include <math.h>
#include <time.h>
using namespace std;
int main()
{
    int n=12000,a=16807,i,vub=0,kp=0;
    float m,xi,r,t1x=0.9,t1y=0.9,t2x=1,t2y=0.5,t3x=0.7,t3y=0,t4x=0,t4y=0.3,px,py;
    float s1,s2,s3,s4,S,mass[12000],massN[1000],g1;
    FILE *file1, *file2, *file3, *file4;
    file1=fopen("S.txt","w");
    file2=fopen("Chusla.txt","w");
    file3=fopen("NormalnoRospChusla.txt","w");
    file4=fopen("Koordunatu.txt","w");
    m=pow(2,31)-1;
    srand(time(NULL));
    xi=rand();
    cout << ("\n"); 
    cout << ("koordunatu choturokutnuka vubratu po zamovchenny:\n");    
    cout << ("(1,1)(1,0.5)(0.5,0)(0,0.5)\t");
    cout << ("Natusnit 1\n");
    cout << ("Yaksho bazaete vvestu svoi koordunatu , natusnit - 2\n");
    cin >> vub;
    if (vub!=1)
    {
           cout << ("Vvedit nastupni koordunatu\n");
           cout << ("t1x = "), cin >> t1x;
           cout << ("t1y = "), cin >> t1y;
           cout << ("t2x = "), cin >> t2x;
           cout << ("t2y = "), cin >> t2y;
           cout << ("t3x = "), cin >> t3x;
           cout << ("t3y = "), cin >> t3y;
           cout << ("t4x = "), cin >> t4x;
           cout << ("t4y = "), cin >> t4y;
    }
    for (i=0;i<n;i++)
    {
        xi=fmod((a*xi),m);
        r=xi/m;
        fprintf(file2, "%f\n" , r);
        mass[i]=r;
    }
 
    for(i=0;i<n;i++);
    {
                if (i%12!=0) 
                {
                               g1=g1+mass[i];
                               cout << g1;
                }
                else
                {
                    g1=g1+mass[i]-6;
                    cout << g1;
                    fprintf(file3, "%f\n", g1);     
                    massN[i]=g1;
                    g1=0;
                }
    }
    for (i=0;i<1000;i++)
    {
        if (i%2==0)
        {
                     px=massN[i];
                     fprintf(file4, "%f\t", px);
        }
        else
        {
            py=massN[i];
            s1=(t2x-t1x)*(py-t1y)-(t2y-t1y)*(px-t1x);
            s2=(t3x-t2x)*(py-t2y)-(t3y-t2y)*(px-t2x);
            s3=(t4x-t3x)*(py-t3y)-(t4y-t3y)*(px-t3x);
            s4=(t1x-t4x)*(py-t4y)-(t1y-t4y)*(px-t4x);
            fprintf(file4, "%f\n", py);
            if ((s1>0)&&(s2>0)&&(s3>0)&&(s4>0)) 
                   {
                   kp=kp+1;
                   fprintf(file1, "%d\n" ,1);
                   }
                   else 
                   {
                        fprintf(file1, "%d\n", 0);
                   }
        } 
    }
    S=kp*2/n;
    cout << S, "\n";
    fclose(file1);
    fclose(file2);
    fclose(file3);
    fclose(file4);
    system("PAUSE");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru