Sobre a série
Primeiro, você pode tratar isso como qualquer outro desafio de golfe com código e respondê-lo sem se preocupar com a série. No entanto, existe uma tabela de classificação em todos os desafios. Você pode encontrar a tabela de classificação junto com mais informações sobre a série no primeiro post .
Embora eu tenha várias idéias alinhadas para a série, os desafios futuros ainda não estão definidos. Se você tiver alguma sugestão, informe-me na postagem da sandbox relevante .
Furo 2: Números de uma distribuição normal
Não acredito que isso ainda não foi feito! Você deve gerar números aleatórios, a partir de uma distribuição normal . Algumas regras (a maioria delas provavelmente são cobertas automaticamente pela maioria dos envios, mas algumas existem para garantir a consistência dos resultados entre idiomas muito diferentes):
Você deve usar dois números inteiros não negativos como entrada : uma semente
S
e a quantidadeN
de números a serem retornados. A saída deve ser uma lista deN
números de ponto flutuante, extraídos de uma distribuição normal com média 0 e variação 1 . Sempre que sua submissão recebe a mesma semente,S
ela deve produzir o mesmo número. Em particular, se for chamado uma vez com e uma vez com , as primeiras entradas das duas saídas deverão ser idênticas. Além disso, pelo menos 2 16 valores diferentes de devem produzir sequências diferentes.(S, N1)
(S, N2)
min(N1, N2)
S
Você pode usar qualquer gerador de números aleatórios incorporado que esteja documentado para desenhar números de uma distribuição (aproximadamente) uniforme , desde que você possa transmiti
S
-lo e suportar pelo menos 2 16 sementes diferentes. Se o fizer, o RNG deve poder retornar pelo menos 2 20 valores diferentes para qualquer número que você solicitar.- Se o seu RNG uniforme disponível tiver um alcance menor, não puder ser cultivado ou suportar poucas sementes, você deve primeiro criar um RNG uniforme com um intervalo suficientemente grande em cima do incorporado ou implementar seu próprio RNG adequado usando a semente. Esta página pode ser útil para isso.
- Se você não implementar um algoritmo estabelecido para gerar distribuições normais, inclua uma prova de correção. Em qualquer um dos casos, o algoritmo que você escolher deve gerar uma distribuição normal teoricamente exata (exceto restrições do PRNG subjacente ou tipos de dados de precisão limitada).
- Sua implementação deve usar e retornar números de ponto flutuante (pelo menos 32 bits de largura) ou números de ponto fixo (pelo menos 24 bits de largura) e todas as operações aritméticas devem fazer uso da largura total do tipo escolhido.
- Você não deve usar nenhuma função interna diretamente relacionada à distribuição normal ou integrais gaussianas, como a função Error ou sua inversa.
Você pode escrever um programa completo ou uma função e receber entradas via STDIN, argumento de linha de comando, argumento de função ou prompt e produzir saída via valor de retorno ou imprimindo em STDOUT (ou alternativa mais próxima).
S
e N
serão números inteiros não negativos, cada um menor que 2 20 . A saída pode estar em qualquer lista conveniente ou inequívoca ou formato de string.
Isso é código de golfe, então a submissão mais curta (em bytes) vence. E, é claro, o menor envio por usuário também entrará na tabela geral de líderes da série.
Entre os melhores
O primeiro post da série gera uma tabela de classificação.
Para garantir que suas respostas sejam exibidas, inicie todas as respostas com um título, usando o seguinte modelo de remarcação:
# Language Name, N bytes
onde N
está o tamanho do seu envio. Se você melhorar sua pontuação, poderá manter as pontuações antigas no título, identificando-as. Por exemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes
(O idioma não é mostrado no momento, mas o snippet exige e o analisa, e eu posso adicionar um cabeçalho por idioma no futuro.)