Если вы собираетесь придумывать какие-то фальшивые новости, вам нужно будет сфабриковать некоторые данные для их резервного копирования. У вас уже должны быть некоторые предвзятые выводы, и вы хотите, чтобы некоторые статистические данные укрепили аргумент вашей ошибочной логики. Этот вызов должен помочь вам!
Даны три входных номера:
- N - количество точек данных
- μ - среднее значение точек данных
σ - стандартное отклонение точек данных, где μ и σ определяются как:
Выведите неупорядоченный список чисел 𝑥 i , который будет генерировать данные N , μ и σ .
Я не буду слишком требователен к форматам ввода / вывода, но я ожидаю, что какой-то десятичный знак для μ , σ и выходных точек данных. Как минимум, должны быть поддержаны как минимум 3 значащие цифры и величина как минимум 1 000 000. IEEE плавает просто отлично.
- N всегда будет целым числом, где 1 ≤ N ≤ 1000
- μ может быть любым действительным числом
- σ всегда будет ≥ 0
- Точки данных могут быть любым действительным числом
- если N равно 1, то σ всегда будет 0.
Обратите внимание, что большинство входов будет иметь много возможных выходов. Вам нужно только дать один действительный вывод. Вывод может быть детерминированным или недетерминированным.
Примеры
Input (N, μ, σ) -> Possible Output [list]
2, 0.5, 1.5 -> [1, 2]
5, 3, 1.414 -> [1, 2, 3, 4, 5]
3, 5, 2.160 -> [2, 6, 7]
3, 5, 2.160 -> [8, 4, 3]
1, 0, 0 -> [0]
источник
+ve
и-ve
означает?Ответы:
Pyth ,
443534 байтаПопробуйте онлайн! (Приведенный выше код определяет функцию.
:.*
Добавляется к ссылке для вызова функции.)Математика
Это создает данные симметрично. Если
N
чёт, то данные - это просто среднее плюс или минус стандартное отклонение. Однако, еслиN
нечетно, то мы просто открыли банку с червями, так как среднее значение должно присутствовать, чтобы данные были симметричными, и поэтому флуктуации должны быть умножены на определенный коэффициент.Если
n
дажеμ+σ
.μ-σ
.Если
n
странноμ
.μ+σ*sqrt(n/(n-1))
.μ-σ*sqrt(n/(n-1))
.источник
MATL , 22 байта
Спасибо @DigitalTrauma за исправление.
Входной заказ:
N
,σ
,μ
.Попробуйте онлайн!
Или посмотрите измененную версию, которая также вычисляет среднее значение и стандартное отклонение произведенных данных, в качестве проверки.
объяснение
Код делится на четыре части:
:
генерирует массив,[1 2 ... N]
гдеN
берется в качестве неявного ввода.t&1Zs/
делит эти числа на их эмпирическое стандартное отклонение (вычисленное с помощью нормализацииN
) иtYm-
вычитает эмпирическое среднее из полученных значений. Это гарантирует, что результаты имеют эмпирическое среднее значение0
и эмпирическое стандартное отклонение1
.*
умножает наσ
и+
добавляетμ
, оба принимаются как неявные входные данные.tZN?x3G
обрабатывает особый случай , которыйN = 1
,σ = 0
для которого выход должен бытьμ
. Если это действительно так, то эмпирическое стандартное отклонение, вычисленное на втором шаге, было следующим0
: делениеinf
и умножениеσ
на третий шагNaN
. Итак, что делает код: если полученный массив состоит из всехNaN
значений (кодаtZN?
), удалите его (x
) и нажмите третий вход (3G
), который естьμ
.источник
Python , 50 байт
Попробуйте онлайн!
Использует следующее
n
распределение -элементов со средним значением0
и sdev1
:1/n
(то есть1
элемент), выход(n-1)**0.5
1-1/n
(то естьn-1
элементами), вывод-(n-1)**(-0.5)
Это изменено, чтобы означать
m
и sdevs
, преобразовываяx->m+s*x
. Досадно,n=1
дает деление на ноль для бесполезного значения, поэтому мы взламывать его прочь, делая/(n-1%n)**.5
, с1%n
давая0
дляn==1
и в1
противном случае.Вы можете подумать, что
(n-1)**.5
можно сократить до~-n**.5
, но возведение в степень происходит первым.А
def
на один байт длиннее.источник
R
836253 байтаЕсли
n=1
, тогда он возвращаетm
(посколькуscale
вернетсяNA
), в противном случае он масштабирует данные,[1,...,n]
чтобы иметь среднее значение 0 и (выборочное) стандартное отклонение 1, поэтому он умножается на,s*sqrt(1-1/n)
чтобы получить правильное стандартное отклонение популяции, и добавляетm
сдвиг к соответствующему среднему значению. Спасибо Дейсону за то, что он познакомил меня с функцией масштабирования и сбросил эти байты!Попробуйте онлайн!
источник
1:n
вместо того,rt(n,n)
чтобы сохранить 4 байта. Иscale
функция, вероятно, может быть полезной.scale
что это здорово.Желе , 20 байт
Попробуйте онлайн!
Полная программа, принимающая три аргумента командной строки: n , μ , σ .
Как?
Создает минимальные (n / 2) значения, равноудаленные от среднего и значения среднего, если n нечетно, так что стандартное отклонение является правильным ...
источник