О серии
Во-первых, вы можете относиться к этому, как к любому другому вызову для игры в гольф, и отвечать на него, не беспокоясь о серии вообще. Тем не менее, существует таблица лидеров по всем задачам. Вы можете найти список лидеров вместе с дополнительной информацией о серии в первом посте .
Несмотря на то, что у меня есть ряд идей для этой серии, будущие проблемы еще не заложены. Если у вас есть какие-либо предложения, пожалуйста, сообщите мне об этом в соответствующей песочнице .
Отверстие 2: числа из нормального распределения
Я не могу поверить, что это еще не сделано! Вы должны генерировать случайные числа, опираясь на нормальное распределение . Некоторые правила (большинство из них, вероятно, автоматически охватываются большинством представлений, но некоторые из них применяются для обеспечения согласованности результатов между совершенно разными языками):
В качестве входных данных вы должны взять два неотрицательных целых числа : начальное число
S
и количествоN
возвращаемых чисел. Выходными данными должен быть списокN
чисел с плавающей запятой, взятый из нормального распределения со средним 0 и дисперсией 1 . Всякий раз, когда вашему представлению дается одно и то же семя,S
оно должно давать одно и то же число. В частности, если он вызывается один раз с и один раз с , первые записи двух выходов должны быть идентичны. Кроме того, как минимум 2 16 различных значений должны давать разные последовательности.(S, N1)
(S, N2)
min(N1, N2)
S
Вы можете использовать любой встроенный генератор случайных чисел, который задокументирован, для рисования чисел из (приблизительно) равномерного распределения, при условии, что вы можете передать
S
его, и он поддерживает как минимум 2 16 различных начальных чисел . Если вы это сделаете, RNG сможет вернуть не менее 2 20 различных значений для любого заданного вами номера.- Если имеющийся у вас однородный ГСЧ имеет меньший диапазон, не пригоден для посева или поддерживает слишком мало семян, вы должны сначала создать однородный ГСЧ с достаточно большим диапазоном поверх встроенного, либо вы должны реализовать свой собственный подходящий ГСЧ, используя семя. Эта страница может быть полезна для этого.
- Если вы не реализуете установленный алгоритм генерации нормальных распределений, пожалуйста, включите подтверждение правильности. В любом случае выбранный вами алгоритм должен давать теоретически точное нормальное распределение (за исключением ограничений базовых типов данных PRNG или ограниченной точности).
- Ваша реализация должна использовать и возвращать либо числа с плавающей запятой (шириной не менее 32 бит), либо числа с фиксированной запятой (шириной не менее 24 бит), и все арифметические операции должны использовать полную ширину выбранного типа.
- Вы не должны использовать какие-либо встроенные функции, непосредственно связанные с нормальным распределением или гауссовыми интегралами, такие как функция Error или ее обратное.
Вы можете написать полную программу или функцию и получать ввод через STDIN, аргумент командной строки, аргумент функции или приглашение и производить вывод через возвращаемое значение или печатать в STDOUT (или ближайшую альтернативу).
S
и N
будут неотрицательными целыми числами, каждое меньше 2 20 . Вывод может быть в любом удобном, однозначном списке или строковом формате.
Это код гольф, поэтому выигрывает самое короткое представление (в байтах). И, конечно же, самая короткая заявка для каждого пользователя также войдет в общую таблицу лидеров серии.
Leaderboard
Первый пост серии генерирует таблицу лидеров.
Чтобы убедиться, что ваши ответы отображаются, начните каждый ответ с заголовка, используя следующий шаблон уценки:
# Language Name, N bytes
где N
размер вашего представления. Если вы улучшите свой счет, вы можете сохранить старые результаты в заголовке, вычеркнув их. Например:
# Ruby, <s>104</s> <s>101</s> 96 bytes
(Язык в настоящее время не отображается, но фрагмент требует и анализирует его, и я могу добавить таблицу лидеров по языкам в будущем.)