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

Генератор нормально распределенной случайной величины в заданном диапазоне - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти сумму чисел,встречающихся в строке (visual c++) http://www.cyberforum.ru/cpp-beginners/thread864089.html
Добрый вечер, помогите решить задачку ,пожалуйста!) Условие:Дана строка до точки, группа символов в которой между пробелами считается словом,знаки препинания от слова пробелом не отделается. Задача:Найти сумму чисел,встречающихся в строке.
C++ Не большой код, нужно написать коментарии хотябы на главные строчки! string fixErrors(string encfile) { int doh = 0; int sindromeOneOriginal; int sindromeTwoOriginal; int sindromeThreeOriginal; int sindromeOne; int sindromeTwo; http://www.cyberforum.ru/cpp-beginners/thread864077.html
BigInteger C++
Что это? Есть уже готовый класс со всякими функциями? Или просто каждое число BigInteger - это массив из цифр, и нужно самому все делать с нуля?)
C++ Хэширование
Ребят, я вообще не понимаю хэширование(( помоги пожалуйста с задачкой, буду признателен. Составить программу для поиска по хэшам данных. Дан текст. Произвести хэширование по словам. В модуле поиска, предусмотреть реализацию обработки случая, при котором хэш-коды различных данных совпадают.
C++ Разреженные матрицы http://www.cyberforum.ru/cpp-beginners/thread864065.html
(С++) Есть такое задание: Даны две разреженные ленточные матрицы. Из одной матрицы вычесть другую и результат занести в разреженную матрицу CSR. Помогите пожалуйста!
C++ Создать класс Matrix, реализующий двухмерный динамический массив типа int Здравствуйте! Задание: Создать класс Matrix, реализующий двухмерный динамический массив типа int. Конструктор должен заполнять массив случайными значениями в диапазоне -50, +50. #ifndef _MATRIX_H_ #define _MATRIX_H_ #include<iostream> #include<Windows.h> #include<time.h> using namespace std; подробнее

Показать сообщение отдельно
NikWhite
1 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 40
15.05.2013, 23:41  [ТС]     Генератор нормально распределенной случайной величины в заданном диапазоне
Цитата Сообщение от 0x10 Посмотреть сообщение
NikWhite, для генерации нормально распределенных случайных величин используется преобразование Бокса-Мюллера. Гуглится легко, на все про все - три простенькие формулы.
Пробовал бокса-мюллера,но он жутко медленный (зависал даже на 10 значениях), совсем не подходит. решил использовать центральную предельную теорему

double NormalDistribution()
C++
1
2
3
4
5
6
7
{
    double S = 0.;    
    for (int i = 0; i < 12; ++i) 
        S += (double)rand() / RAND_MAX;
 
   return S - 6.;
}
Попытался сделать, чтобы это работало в конкретном диапазоне (от 200 до 300), но не получилось, попадаются числа выпадающие из этого диапазона.

Добавлено через 13 минут
Цитата Сообщение от kamre Посмотреть сообщение
Почитайте про определение нормального распределения, там никаких промежутков нет, любое действительное значение может приниматься.
Я могу генерировать случайною величину в заданном диапазоне, она получится равномерно распределенной на этом промежутке, а потом с помощью центральной предельной теоремы перейду к нормально распределенной.

И еще Χ принадлежит [-∞;+∞], теоретически есть промежутки.

Добавлено через 2 часа 30 минут
Цитата Сообщение от Ternsip Посмотреть сообщение
NikWhite,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
using namespace std;
 
double gen(double mn, double mx) { // не используйте min max это функции из cmath
    int dx = mx - mn;
    double accur = 1e3;
    int fmx = dx * accur;
    double t = rand()%fmx;
    t /= accur;
    return mn + t;
}
 
int main() {
    for (int i = 0; i < 1000; i++) {
        printf("%.5lf\n", gen(39, 42));
    }
    return 0;
}
Добавлено через 1 минуту
NikWhite, ваще тут при больших значениях фигня будет

Добавлено через 1 минуту
NikWhite, если числа маленькие, то юзайте

Добавлено через 41 секунду
NikWhite, randMAX просто слишком маленький
Тут не нормально распределенная получается и мне нужно генерировать от 1000 значений.
 
Текущее время: 23:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru