Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/106: Рейтинг темы: голосов - 106, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 10

Создание массива с равномерным распределением

16.01.2010, 22:37. Показов 20334. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо на Си написать алгоритм, формирования 2-х массивов, в одном случайные числа от 0 до 10, подчиняющиеся закону равномерного распределния, а второй массив также на 1000 точек, подчиняющийся закону нормального рапределния, с нулевым средним и стандартным отклонением (или дисперсией) равным 1, т.е. (0,1).
Прошу помочь кто понял о чем речь, буду весьма признателен.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.01.2010, 22:37
Ответы с готовыми решениями:

Нахождение массива средних из большего массива с равномерным распределением. Как?
Есть массив y и массив x (цифры могут быть разные). Как максимально равномерно разбить массив y на куски, количество которых соответствует...

Случайные числа с равномерным распределением
Есть 2 разные картинки. Нужно показывать их попеременно, случайным образом, но так, чтобы вероятность была одинаковая. Т е чтобы из 10...

Как смоделировать шум с равномерным распределением
Препод просто достал ,осталась одна лаба и он постоянно придирается( Как правильно смоделировать шум с равномерным распределением где...

10
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
16.01.2010, 22:39
zmei88,

Библиотека Boost.Random всё это умеет.
www.boost.org, примеры там же.
0
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 10
17.01.2010, 01:10  [ТС]
спасибо, интересная библиотека, но она я так понимаю только на Си++ работает, мне бы это как то бы все реализовать при момощи функций, не используя классы, чтоб максимум проще было, т.к. это входит в мою курсовую, а с программированием я сильно не дружу...

Добавлено через 2 часа 4 минуты
ну может хоть кто-нить подскажет,хотя бы с нормальным распределением, я там не знаю как задавать параметры нулевого среднего и стандартного отклонения (дисперсии), равномерное вроде я так понял просто вот так сделать:

C
1
2
3
4
5
srand(time(NULL));
    for(int i=1;i<1001;i++)
    {
        a[i]= 1 + rand() %1000;
    }
0
Эксперт С++
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
17.01.2010, 01:38
Вообще-то у стандартного rand() не совсем равномерное распределение - там алгоритм плохой. Если работаешь с такими понятиями, как дисперсия и матожидание, бери алгоритм Mercienne Twister. Нормальное распределение (точнее, близкое к нормальному) можно получить, сложив 5-6 величин с равномерным распределением.
0
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 10
17.01.2010, 13:47  [ТС]
Товарищи, помогите пожалуйста с кодом на Си, очень нужно...сам ну никак не осилю...
0
Эксперт С++
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
17.01.2010, 19:19
А что именно не осиливаешь-то? Если нормальный ГПСЧ, то вот тот самый Mercienne Twister, находится за считанные секунды.
Подключаешь в проект mt19937ar.c, mt19937ar.h и пользуешься нужным тебе вариантом genrand_real.
Ну а сложить 6 чисел, надеюсь, проблем не будет.
0
 Аватар для Shymep
13 / 13 / 2
Регистрация: 10.01.2010
Сообщений: 34
17.01.2010, 19:34
Код тебе в помощь
0
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
17.01.2010, 19:53
C++
1
2
3
4
5
6
7
8
9
    // Равномерно распределённое число [0,1]
    double Random() 
    {
        static const unsigned int A = 1686629717;
        static const unsigned int C = 907633385;
        static unsigned int n = GetTickCount();
 
        return ((double)(n = A*n+C))/0xFFFFFFFF;
    }
Использую, доволен очень. В качестве доп. аргумента - её использует разработчик Magic Particles, а так как рандом там так сказать визуально виден и неравномерность сразу винда) Если его устроила функция значит она действительно неплоха.

Ps. n - может быть равен 0 тогда последовательность не будет менять от запуска к запуску.
0
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 10
17.01.2010, 22:25  [ТС]
я вот нашел еще вот такую штуку
http://www.srcc.msu.su/num_ana... /gsn1r.htm
там я так понимаю все как мне нужно, только вот проблема, я не могу это все использовать в своей программе, из-за недостатка знаний по Си, может кто сможет глянуть??

Добавлено через 30 минут
я вот попробовал сделать так так все писали выше, может кто-нить посмотреть правильно я или нет сделал?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
srand(time(NULL));
    //нормальное распределение
    for(int i=1;i<1001;i++)
    {
        float ger=0;
        for(int i2=1;i2<7;i2++)
        {
            ter[i2]=-1 + rand() %1;
            ger=ger+ter[i2];
        }
        a[i]= ger;
 
    }
    //равномерное распределение
    for(i=1;i<1001;i++)
    {
        b[i]= 0+ rand() %10;
    }
0
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
17.01.2010, 23:12
Попытался выделить то что по ссылочке... не знаю... что то не то выходит. Мудрено как то чтобы понять. Но код запускается
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
double d_mod(double *x,double *y)
{
    return(*x - (*y) * ( (long int) (*x / *y)) );
}
 
int gsn3r_c(int *iseed, int *n, double *r__)
{
    /* Initialized data */
 
    static double d2p31m = 2147483647.;
    static double d2pn31 = 4.656612873077393e-10;
    static double d2p32m = 16807.f;
 
    /* System generated locals */
    int i__1;
    double d__1;
 
 
 
    /* Local variables */
    static int i__, m;
    static double u, v;
    static double z__;
    static int nn;
    static double sln, sum;
 
    /* Parameter adjustments */
    --r__;
 
    /* Function Body */
    nn = *n;
    m = *n - (*n / 2 << 1);
    if (m != 0) {
        --nn;
    }
    z__ = (double) (*iseed);
    i__1 = nn;
    for (i__ = 1; i__ <= i__1; i__ += 2) {
        d__1 = d2p32m * z__;
        z__ = d_mod(&d__1, &d2p31m);
        u = z__ * d2pn31;
        d__1 = d2p32m * z__;
        z__ = d_mod(&d__1, &d2p31m);
        v = z__ * d2pn31;
        u = u + u - 1.f;
        v = v + v - 1.f;
        sum = u * u + v * v;
        if (sum >= 1.f) {
            continue;
        }
        sln = (double)log(sum);
        sln = (double)sqrt((double)((-sln - sln) / sum));
        r__[i__] = u * sln;
        r__[i__ + 1] = v * sln;
/* L2: */
    }
    *iseed = (int) z__;
    return 0;
}
 
int main(){
    double a[100] = {0};
    int i = 100, s = 0;
    gsn3r_c(&s, &i, &a[0]);
 
return 0;
}
0
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 10
19.01.2010, 14:10  [ТС]
Люди помогите пожалуйста с кодом на Си, ну очень нужно, я готов заплатить...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.01.2010, 14:10
Помогаю со студенческими работами здесь

Генератор случайных чисел с равномерным распределением
Добрый день, помогите сделать задачку. Мне нужно сделать в PHP Генератор случайных чисел с равномерным распределением. не подскажете как...

Очень сложная задача с равномерным распределением
Есть 5 переменных $a $b $c $d $e которые нужно равномерно распределять по наборам переменных. Наборы могут быть от 1 до 10...

Статическая перелинковка Wordpress с равномерным распределением
Нужен плагин или код, который будет выводить под записью блок ссылок с миниатюрами. Но ссылки должны быть статичными, то есть не меняться...

Составить программу генерирования СВ с равномерным распределением
Подскажите,пож-та, как составить программу генерирования СВ с равномерным распределением.

Генерирование случайных величин с равномерным распределением
Подскажите,пож-та, как составить программу генерирования СВ с равномерным распределением.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru