Куча говна / Говнокод #27400 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
%% Generates a Normal-distributed random variable using Box-Muller method
%% from: https://github.com/basho/basho_stats/blob/develop/src/basho_stats_rv.erl
-spec rnd_normal(integer(), integer()) -> non_neg_integer().
rnd_normal(Mean, Sigma) ->
  Rv1 = random:uniform(),
  Rv2 = random:uniform(),
  Rho = math:sqrt(-2 * math:log(1-Rv2)),
  abs(trunc(Rho * math:cos(2 * math:pi() * Rv1) * Sigma + Mean)).

Это норма.

Запостил: CHayT CHayT, (Updated )

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

    • > какое распределение

      А что с ним? Вроде похоже на формулу с википедии.
      Ответить
        • Мне почему-то показалось, что Mean == 0. Но походу нет и там вообще какая-то забавная хрень...
          Ответить
      • Понятня, спасибо. Я думала, в Erlang перегрузки по типу тоже есть, а ня только по количеству аргументов.
        Ответить
    • Где ты такое видишь? Если ты про 'fun kurochka:kok/1', то это взятие ссылки на функцию, после / идёт arity.
      Ответить
      • Понятня, спасибо. Я думала, в Erlang перегрузки по типу тоже есть, а ня только по количеству аргументов.
        Ответить
        • Так в нём динамическая питуизация-с.
          Правда в отличие от питона, аннотации типов действительно статически проверяются.
          Ответить
            • Заапдейтил коммент. Это для статического анализатора ``Dialyzer''. Он довольно круто умеет разгребать
              foo(A) when is_integer(A) ->
                kukareku;
              foo(kurochka) ->
                koko.
              -подобную дичь.
              Ответить
                • В питоне эти аннотации только для красоты, вроде.
                  Ответить
                  • Нят, есть mypy, pyright и прочие анализаторы, которые проверяют типокорректнясть. Но работают они криво и косо, конячно.
                    Ответить
              • > foo(A) when is_integer(A) ->
                Что-то мне это няпоминает... А, точня!
                auto foo(T A) -> std::enable_if_t<std::is_integral<T>> {}
                Ответить
                • В Nim что-то подобное есть! Там тоже для ветвления во время компайл-тайма можно использовать when, который ведёт себя как if.
                  Ответить
  • Оттуда же:
    %% @doc Returns `true' if `Op1' precedes `Op2'
    %%      according to their median time.
    -spec cmp_opmedian(op(), op()) -> boolean().
    cmp_opmedian(Op1, Op2) ->
      (Op1#op.start_time + Op1#op.end_time)/2 <
        (Op2#op.start_time + Op2#op.end_time)/2.

    Какой ордеринг )))
    Ответить

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8