О серии
Во-первых, вы можете относиться к этому, как к любому другому вызову для игры в гольф, и отвечать на него, не беспокоясь о серии вообще. Тем не менее, существует таблица лидеров по всем задачам. Вы можете найти список лидеров вместе с дополнительной информацией о серии в первом посте .
Несмотря на то, что у меня есть ряд идей для этой серии, будущие проблемы еще не заложены. Если у вас есть какие-либо предложения, пожалуйста, сообщите мне об этом в соответствующей песочнице .
Отверстие 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
(Язык в настоящее время не отображается, но фрагмент требует и анализирует его, и я могу добавить таблицу лидеров по языкам в будущем.)
