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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Как изучать С++ ? http://www.cyberforum.ru/cpp-beginners/thread318328.html
Уважаемые участники форума, я тут на досуге - невзначай решил научиться азам С++. Нашел кучу учебников сижу типа читаю. Столкнулся с проблемой - масса ненужной информации и нет систематизации материала. Обычно начинают вешать всякую лапшу на уши о том как вначале ничего не было. потом создали компьютер, юзера, админа, Windows итд итп, а потом бац и сложный материал. Может ли мне кто...
C++ Нахождение кратчайшего пути в неорентированном графе от заданой вершины к заданной Добрый день. Вот решаю задачку о кратчайщем расстояние между двумя верщинами в неорентированном связном графе без циклов. Заданны такие параметры. (Помещаю их в файл text2.txt) 6 -- количество вершин N 1 2 7 -- Начало, конец, длина 2 3 3 2 4 6 4 5 3 5 6 1 4 -- количество пар вершин M для которых нужно узнать короткое растояние http://www.cyberforum.ru/cpp-beginners/thread318302.html
Массив C++
Помогите разобраться. Только начал читать про указатели и решил написать простенькую программку :) Она считает кол-во прописных букв и записывает эти буквы в массив. Насчет счетчика всё ясно, но вот как записывать буквы в массив не разобрался. GNU nano 2.2.6 Файл: p209E12.cpp #include <cctype> #include <iostream> using namespace std; main() {
C++ исправить код программы
#include<iostream.h> #include<conio.h> #include<stdlib.h> #include<string.h> #include<iomanip.h> float f( float, float, float, float); float pr_chet( float *mas, int k); float sum_f( float *mas,int k); void Vivod_mas(float a,int k);
C++ Дискриминант http://www.cyberforum.ru/cpp-beginners/thread318265.html
Даны числа A,B,C (Число А не равно нулю) Расмотрев дискриминант D=b^2-4*a*c проверить истинность высказывания ax^2+bx+c=0 имеет вещественные корни. Если можно попроще обьяснить я только начал всем спасибо заранее. пример А=2.68, В=0.93, с=-8.62 ---Истина
C++ HANDLE файла зная путь к нему Привет всем. Подскажите с помощью какой функции можно получить HANDLE файла, при наличии полного пути к єтому фалу? подробнее

Показать сообщение отдельно
ny4ulo
0 / 0 / 0
Регистрация: 10.02.2010
Сообщений: 7
12.06.2011, 17:00     Нормальное Распределение чисел
есть программа. вычисляет нормально распределенные два числа методом Бокса — Мюллера, не могу сделать что выводила случайную последовательность а не два числа. помогите плиз!
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#include <math.h>
 
typedef unsigned long long u64;
typedef long long s64;
typedef double d64;
 
typedef struct {
  u64 rec_count;
  u64 start;
  u64 size;
} pack_prm;
 
typedef struct {
  d64 Sx;
  d64 Sy;
} pack_res;
 
#define CONST_1 ((u64)1<<46)
 
#ifndef max
#define max(a,b)  ((a) > (b) ? (a) : (b))
#endif
 
#ifdef USE_MACROS
#define lfabs(a)  ((a) < 0 ? (a)*(d64)(-1) : a)
#define get_ab_mod_2_46(a,b)  ((((a) % CONST_1)*((b) % CONST_1)) % CONST_1)
 
#else
 
#if 0
#ifndef __tplusplus
d64 max(d64 a, d64 b){
  return a > b ? a : b;
}
#endif
#endif
 
inline d64 lfabs(d64 a) {
    return a < 0 ? -a : a ;
}
 
inline u64 get_ab_mod_2_46(u64 a, u64 b) {
    return ((a % CONST_1)*(b % CONST_1)) % CONST_1;
}
 
#endif
 
inline u64 fast_raise(u64 a, u64 x) {
  u64 res=1;
  while( x > 0 ){
    if ( x & (u64)1) res=get_ab_mod_2_46(res,a);
    a=get_ab_mod_2_46(a,a);
    x >>= 1;
  }
  return res;
}
 
void make_gist(u64 k,u64 packet_len, u64 a, u64 s, pack_res *res) {
  u64 count=0;
  u64 tmp1,tmp2,x0=fast_raise(a,(u64)2*k);
  tmp2=get_ab_mod_2_46(x0,s); //x_0
 for(; count < (u64)packet_len; count++){
    d64 x,y,t;
    tmp1=get_ab_mod_2_46(a,tmp2);          //x_1
    tmp2=get_ab_mod_2_46(a,tmp1);          //y_1
    x=(d64)((s64)(tmp1<<1) - (s64)CONST_1)/(d64)CONST_1;
    y=(d64)((s64)(tmp2<<1) - (s64)CONST_1)/(d64)CONST_1;
    t=x*x+y*y;
    if(t<=1.0)
    {
      t=sqrt(-2.0*log(t)/t);
      x*=t;
      y*=t;
      
      res->Sx=x;
      res->Sy=y;
    }
  }
}
 
tfun pack_res iterator (pack_prm parm) {
  int i;
  pack_res res;
  if(parm.rec_count == 0 )
  {
    
    res.Sx = res.Sy = 0;
    make_gist(parm.start,parm.size,(u64)pow(5.0,13),271828183,&res);
  } 
 else 
  {
    pack_prm pt1,pt2;
    tval pack_res res1,res2;
    pt1.rec_count=pt2.rec_count=parm.rec_count-1;
    pt2.start=(pt1.start=parm.start)+(pt1.size=pt2.size=parm.size/2);
 
    res1 = iterator(pt1);
    res2 = iterator(pt2);
 
  
    res.Sx = ((pack_res&)res1).Sx + ((pack_res&)res2).Sx;
    res.Sy = ((pack_res&)res1).Sy + ((pack_res&)res2).Sy;
  }
  return res;
}
 
tfun int main (int argc, char* argv[]) {
  int i=1;
  pack_prm prm = { (u64)10, (u64)0, (u64)1 << 28 };
                      //^^-depth              ^^-size
  while (i < argc) {
    if (argv[i][0] == '+') argv[i][0] = '-';
    if (strcmp(argv[i], "-size") == 0) {
      prm.size = 1ULL << atol(argv[++i]);
    } else if (strcmp(argv[i], "-depth") == 0) {
      prm.rec_count = atol(argv[++i]);
    } else {
      printf(
        "Usage:\n"
        "ep [-size <problem_size>] [-depth <tree depth>]\n"
      );
      return -1;
    }
    i++;
  }
 
  printf("v20 sizeof(u64)=%lu sizeof(d64)=%lu\nProblem size %Lu\n",
         sizeof(u64),sizeof(d64),prm.size);
 
  pack_res res = iterator(prm);
 
  printf("Sx=%le\nSy=%le\n", res.Sx, res.Sy);
  return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru