1. C++ / Говнокод #23715

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    double x = 0, y;
    while (x < 1) {
        y = x;
        x += rand(0, 1);
    }

    Задача на теорию вореации и кобенаторику.
    rand - равномерное распределение
    Нужно найти матожидание y. С пруфами.

    Запостил: 3_dar, 07 Февраля 2018

    Комментарии (46) RSS

    • заношу на 1/sqrt(2)
      Ответить
      • показать все, что скрытоЗанес тебе за гланды.
        Ответить
      • Не правильно.
        Потом (чтобы не спойлерить) могу скинуть ссылку откуда я это взял, с разбором.
        Ответить
        • Лень думать.
          Нужно сделать программу, которая методом Монте-Карло его посчитает.
          Но программу делать тоже лень, бггг.
          Я вот тоже сразу подумал на 1/sqrt(2), чисто интуитивно мат. ожидание должно быть больше 0.5
          Ответить
        • var N=1000000,z=0;for (var i=0;i<N;++i){
          var x = 0
              while (x < 1) {
                  y = x;
                  x += Math.random(1);
              }
          z+=y;
          }
          console.log(z/N)

          0.7184265171596017

          Таки похоже на обратный корень из 2 с коррекцией на хуёвый рандом в js.
          Ответить
          • PS> Неужели e-2?
            Ответить
            • Ага. Только самое интересное - почему. Я сам ещё не смотрел доказательство.
              Ответить
              • Помимо 1/sqrt(2), у меня еще подозрения были на Math.log(2).
                Но дробная часть e... Вряд ли бы подумал.

                >Только самое интересное - почему
                e - связана с ростом, накоплением.
                Ответить
                • Помни врага в лицо, 2.718281828459045 3.141592653589793
                  Ответить
                  • Если    
                                  х
                    f(x)=(1+(1/x))
                    
                    То:
                    (e-2)=f(∞) - f(1)


                    Какой смысл у этого? Например есть некая растущая величина, допустим вклад в банке, на который за время T набегают проценты равные сумме исходного вклада.

                    То есть он увеличивается в 2 раза. И есть другой вклад, в котором непрерывно проценты капают не только на основное тело, но и на ранее начисленные проценты. Такой вклад за Т увеличивается в e раз.

                    Выражаясь простым языком (e-2) это разница между ростом непрерывным (постоянная капитализация) и ростом дискретным.
                    Ответить
                  • >Помни врага в лицо
                    Всё неправильно.

                    https://www.youtube.com/watch?v=jG7vhMMXagQ

                    https://www.youtube.com/watch?v=kmnogV9S7b8

                    https://www.youtube.com/watch?v=nnZk_YuIYkA


                    А враг-то в другом месте окопался.
                    Ответить
    • Извините за тесты, я бота с погодой делаю
      Ответить
    • Как следует понимать "равномерное распределение"? Ведь в плавучем питухе есть денормализованные числа. Вот допустим-предположим что программисты-наркоманы после очередной дозы сильнодействующих веществ изобрели особый тип, который может принимать значения 0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1; и надо получить случайное число от 0 до 1, и чтоб с равномерным распределением. Вероятность получить 0.01 равна или не равна вероятности получить 0.1?
      Ответить
      • Да, еще ж в плавучем питухе бывает отрицательный ноль, он может сгенерироваться в rand(0, 1)?
        Ответить
      • А еще есть разные способы округления
        Ответить
      • Почему сразу наркоманы? А в реальных x86 разве не так? Диапазон [0, 0.5] гораздо шире, чем [0.5, 1]
        Ответить
      • По-моему еще Кнут на эту тему писал.

        >вореантность получить 0.01 равна или не равна вореантности получить 0.1?
        std::uniform_real_distribution
        Ответить
    • стыдно
      Ответить
      • Снова Ваш студент? Или решение легко найдёт даже ребёнок?
        Ответить
        • не, наоборот, стыдно, что не знаю, как решать, хотя тервер с матстатом проходил в относительно недавно.
          и вообще, сначала не так прочитал и расстроился, что y не инициализирована.
          Ответить
          • А, тогда и мне стыдно. Пытался посчитать, но оказывается, что любые мои рассуждения приводят к ошибке. Начинается всё с того, что я не умею интегрировать.
            У меня получается, что P(x1+x2+x3+...+xn<A) = A^(2*n-1) / (2*n-1)! вместо ~1/n!
            Хотя, вот сейчас перечитывал записи, увидел, что пихал линейную питушню вместо константы - вот и с каждым интегрированием набирался квадрат вместо линейного питуха.
            Хм, может, я хотя бы половину задачи осилю...
            Ответить
            • vanished
              Ответить
            • До чего дошёл я. Пусть x - случайное число, nx - сумма n случайных чисел. На основе экспериментов получены следующие гипотезы (проверял на n из 1..6):
              1. P(nx<1) = 1/n!
              2. E(nx, nx<1, 0 иначе) = n/(n+1)!
              3. P(nx<1, (n+1)x>1) = E(nx,nx<1,0 иначе)
              4. E(nx, nx<1, (n+1)x>1, 0 иначе) = n(n+1)/(n+2)!
              5. from 1 to inf sum(E(nx, nx<1, (n+1)x>1, 0 иначе)) = e-2
              6. E(y из задачи) = e-2
              Доказать я могу только первый пункт, и наверное второй.
              Ответить
              • ебливый пасс в москве угостит анусом, армяне чечены даги азеры - велкам! встреча на любой территории, бдсм амуницию ношу с собой, любые желания за твои деньги! пиши прямо сейчас wiistriker@gmail.com антон ЖДУ
                Ответить
            • Блин, из-за этих тестов ботов тред как-то потерялся.

              А я давеча размышлял на эту тему. Проблема как мне кажется в следующем.

              Посчитать МО фиксированного числа случайных переменных не слишком сложно. Но посчитать МО случайного! числа случайных переменных — та еще задачка.

              Решил зайти с другой стороны.

              И обнаружил еще более внезапный и потрясающий факт: мат. ожидание количества итераций равно e.

              В смысле, в среднем цикл while (x < 1) будет отрабатывать 2.7.. раз!
              Ответить

    Добавить комментарий