Informazioni sulla serie
Prima di tutto, puoi trattarlo come qualsiasi altra sfida di golf del codice e rispondere senza preoccuparti della serie. Tuttavia, esiste una classifica in tutte le sfide. Puoi trovare la classifica insieme ad alcune ulteriori informazioni sulla serie nel primo post .
Anche se ho un sacco di idee in programma per la serie, le sfide future non sono ancora state messe sulla pietra. Se hai suggerimenti, per favore fatemelo sapere sul post sandbox pertinente .
Buca 2: numeri da una distribuzione normale
Non riesco a credere che non sia stato ancora fatto! Devi generare numeri casuali, attingendo da una distribuzione normale . Alcune regole (la maggior parte di esse è probabilmente automaticamente coperta dalla maggior parte delle presentazioni, ma alcune sono in atto per garantire la coerenza dei risultati tra lingue molto diverse):
Dovresti prendere due numeri interi non negativi come input : un seme
S
e la quantitàN
di numeri da restituire. L'output dovrebbe essere un elenco diN
numeri in virgola mobile, tratti da una distribuzione normale con media 0 e varianza 1 . Ogni volta che alla tua presentazione viene dato lo stesso semeS
, dovrebbe produrre lo stesso numero. In particolare, se viene chiamato una volta con e una volta con , le prime voci delle due uscite dovrebbero essere identiche. Inoltre, almeno 2 16 valori diversi di dovrebbero produrre sequenze diverse.(S, N1)
(S, N2)
min(N1, N2)
S
Puoi usare qualsiasi generatore di numeri casuali incorporato che sia documentato per disegnare numeri da una distribuzione (approssimativamente) uniforme , a condizione che tu possa passarci
S
sopra e che supporti almeno 2 16 semi diversi. In tal caso, l'RNG dovrebbe essere in grado di restituire almeno 2 20 valori diversi per ogni dato numero richiesto da esso.- Se il tuo RNG uniforme disponibile ha un intervallo più piccolo, non è seminabile o supporta un numero troppo basso di semi, devi prima costruire un RNG uniforme con un intervallo sufficientemente ampio sopra quello incorporato oppure devi implementare il tuo RNG adatto usando il seme. Questa pagina può essere utile per questo.
- Se non si implementa un algoritmo stabilito per la generazione di distribuzioni normali, si prega di includere una prova di correttezza. In entrambi i casi, l'algoritmo scelto deve produrre una distribuzione normale teoricamente esatta (salvo limitazioni del PRNG sottostante o tipi di dati a precisione limitata).
- L'implementazione dovrebbe utilizzare e restituire numeri in virgola mobile (almeno 32 bit di larghezza) o numeri in virgola fissa (almeno 24 bit di larghezza) e tutte le operazioni aritmetiche dovrebbero utilizzare l'intera larghezza del tipo scelto.
- Non è necessario utilizzare alcuna funzione integrata direttamente correlata alla distribuzione normale o agli integrali gaussiani, come la funzione Errore o il suo contrario.
È possibile scrivere un programma completo o una funzione e accettare input tramite STDIN, argomento della riga di comando, argomento della funzione o prompt e produrre output tramite il valore restituito o stampando su STDOUT (o l'alternativa più vicina).
S
e N
saranno numeri interi non negativi, ciascuno inferiore a 2 20 . L'output può essere in qualsiasi elenco o formato stringa comodo e inequivocabile.
Questo è il golf del codice, quindi vince l'invio più breve (in byte). E, naturalmente, anche l'invio più breve per utente entrerà nella classifica generale della serie.
Classifica
Il primo post della serie genera una classifica.
Per assicurarti che le tue risposte vengano visualizzate, inizia ogni risposta con un titolo, utilizzando il seguente modello Markdown:
# Language Name, N bytes
dov'è N
la dimensione del tuo invio. Se si migliora il punteggio, è possibile mantenere i vecchi punteggi nel titolo, colpendoli. Per esempio:
# Ruby, <s>104</s> <s>101</s> 96 bytes
(La lingua non è attualmente visualizzata, ma lo snippet richiede e analizza, e in futuro potrei aggiungere una classifica per lingua.)