На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Как получить случайное число от 0 до 1 (норм.)
    Как получить случайное число от 0 до 1 с нормальным законом распределения?
      енто невозможно, ибо нормальное распределение от минус бесконечности до плюс бесконечности. если надо равномерное, то практически во всех языках есь функции вроде random, которые возвращают число, равномерно распределённое в интервале от 0 до 1. кстати был ещё такой топик: http://pascal.sources.ru/cgi-bin/forum/YaBB.cgi?board=algorithm;action=display;num=1048463630.
        Сам Random:
        ExpandedWrap disabled
          <br>unsigned long R0=0xF8A6F4D,...<br>...<br>double Random(void){<br> long Bit1=(R0>>7)&0xF,<br>       Bit2=(R0>>19)&0xF;<br> R0<<=4;<br> R0|=(Bit1^Bit2);<br> return R0*1./0xFFFFFFFF;<br>}<br>Красивое равномерное распределение - только сегодня лабу эту сдавала...<br>



        Гауссово распределение (оно же "Нормальное"):
        ExpandedWrap disabled
          <br> double tmp=0;<br> for(int i=0;i<6;i++)tmp+=Random(Alg);<br> tmp-=3;tmp*=1.4142*sqrt(Dx);tmp+=Mx;<br> return tmp;<br> Dx & Mx - дисперсия и М.О. заданы изначально<br>



        Гамма - распределение:
        ExpandedWrap disabled
          <br> tmp=1;<br> for(i=0;i<GammaN;i++)tmp*=Random(Alg);<br> return -logl(tmp)/L;<br>L, GammaN тоже заданы изначально<br>

          2Волченка

          вопервых, говоря в таком ключе о гауссовом распределении, надо помнить, что полученное с помощью такой функции распределение не совсем гауссово и приближается к нему с увеличением количества итераций. кстати как вычислить нормировочный множитель для заданного колва итераций? самому интегрировать лень.
            Цитата wormball, 17.04.03, 16:00:49
            енто невозможно, ибо нормальное распределение от минус бесконечности до плюс бесконечности. если надо равномерное, то практически во всех языках есь функции вроде random, которые возвращают число, равномерно распределённое в интервале от 0 до 1. кстати был ещё такой топик: http://pascal.sources.ru/cgi-bin/forum/YaBB.cgi?board=algorithm;action=display;num=1048463630.



            конечно а
            ничего что вероятность отклонится от мат. ожидания на более чем десять дисперсий
            незначима

            все возможно если правильно на это посмотреть
            кроме разве теоремы Геделя о неразрешимости ))
              Цитата esperanto, 27.04.03, 09:32:14
              конечно а
              ничего что вероятность отклонится от мат. ожидания на более чем десять дисперсий
              незначима

              формально, это правда.
              но имхо человек, задававший вопрос в такой форме просто не вполне понимал что есть нормальное распределение.
                Народ помогите! я не программист, а строитель.....как в VBA задать гауссовское распределение (неравномерное распределение), то есть скорее всего есть функция аналогичная RND(x) (равномерное распределение).

                И как оно действует Гауссовское распределение в ВБА :wacko:
                  http://alglib.sources.ru/statistics/randomnumbers.php
                    по конкретнее пожалуйста? напишите функцию
                      RndNormal - Гаусовское оноже нормальное распределение.
                        пасиб!
                          чет не выходит(((


                          короче вот пример:
                          dim N as double
                          N=20
                          N1=(rnd*0.9)+1.1
                          N2=N*N1

                          вот надо то же самое ...только через распределение Гаусса
                            Rndnoral это на каком языке??
                            мне надо на VBA ...имя функции

                            Добавлено
                            Rndnormal*
                              что специалистов нету что ли? подскажите одну функцию
                                BountyKnight
                                Тебе нужна функция, возвращающая (псевдо)случайное число с нормальным распределением?
                                В посте #8 есть ссылка. Перейди по ней, там внизу есть ссылки на несколько реализаций, среди них имеется Visual Basic. С минимальными переделками эти функции должны работать и в VBA. В посте #10 тебе даже указали нужную функцию - RandNormal.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.2739 ]   [ 15 queries used ]   [ Generated: 6.10.26, 00:58 GMT ]