Sobre la serie
En primer lugar, puede tratar esto como cualquier otro desafío de golf de código y responderlo sin preocuparse por la serie. Sin embargo, hay una tabla de clasificación en todos los desafíos. Puede encontrar la tabla de clasificación junto con más información sobre la serie en la primera publicación .
Aunque tengo un montón de ideas para la serie, los desafíos futuros aún no están establecidos en piedra. Si tiene alguna sugerencia, hágamelo saber en la publicación de sandbox relevante .
Hoyo 2: números de una distribución normal
¡No puedo creer que esto no se haya hecho todavía! Debes generar números aleatorios, a partir de una distribución normal . Algunas reglas (la mayoría de ellas probablemente están cubiertas automáticamente por la mayoría de las presentaciones, pero algunas están en su lugar para garantizar la consistencia de los resultados entre idiomas muy diferentes):
Debe tomar dos enteros no negativos como entrada : una semilla
S
y la cantidadN
de números que se devolverán. La salida debe ser una lista deN
números de coma flotante, extraída de una distribución normal con media 0 y varianza 1 . Cada vez que su envío recibe la misma semillaS
, debe producir el mismo número. En particular, si se llama una vez con y una vez con , las primeras entradas de las dos salidas deben ser idénticas. Además, al menos 2 16 valores diferentes de deberían producir secuencias diferentes.(S, N1)
(S, N2)
min(N1, N2)
S
Puede usar cualquier generador de números aleatorios incorporado que esté documentado para extraer números de una distribución (aproximadamente) uniforme , siempre que pueda pasarlo
S
y admita al menos 2 16 semillas diferentes. Si lo hace, el RNG debería poder devolver al menos 2 20 valores diferentes para cualquier número dado que le solicite.- Si su RNG uniforme disponible tiene un rango más pequeño, no es visible o admite muy pocas semillas, primero debe construir un RNG uniforme con un rango suficientemente grande sobre el incorporado o debe implementar su propio RNG adecuado utilizando la semilla. Esta página puede ser útil para eso.
- Si no implementa un algoritmo establecido para generar distribuciones normales, incluya una prueba de corrección. En cualquier caso, el algoritmo que elija debe producir una distribución normal teóricamente exacta (salvo las limitaciones del PRNG subyacente o los tipos de datos de precisión limitada).
- Su implementación debe usar y devolver números de punto flotante (al menos 32 bits de ancho) o números de punto fijo (al menos 24 bits de ancho) y todas las operaciones aritméticas deben usar el ancho completo del tipo elegido.
- No debe utilizar ninguna función integrada directamente relacionada con la distribución normal o las integrales gaussianas, como la función Error o su inversa.
Puede escribir un programa completo o una función y recibir información a través de STDIN, argumento de línea de comando, argumento de función o solicitud y producir salida a través del valor de retorno o imprimiendo en STDOUT (o la alternativa más cercana).
S
y N
serán enteros no negativos, cada uno menor de 2 20 . La salida puede estar en cualquier formato de lista o cadena conveniente y sin ambigüedades.
Este es el código de golf, por lo que gana el envío más corto (en bytes). Y, por supuesto, la presentación más corta por usuario también entrará en la tabla de clasificación general de la serie.
Tabla de clasificación
La primera publicación de la serie genera una tabla de clasificación.
Para asegurarse de que sus respuestas aparezcan, comience cada respuesta con un título, utilizando la siguiente plantilla de Markdown:
# Language Name, N bytes
¿Dónde N
está el tamaño de su envío? Si mejora su puntaje, puede mantener los puntajes antiguos en el título, tachándolos. Por ejemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes
(El idioma no se muestra actualmente, pero el fragmento requiere y analiza, y puedo agregar una tabla de clasificación por idioma en el futuro).