Über die Serie
Zunächst einmal können Sie dies wie jede andere Code-Golf-Herausforderung behandeln und beantworten, ohne sich Gedanken über die Serie zu machen. Es gibt jedoch eine Rangliste für alle Herausforderungen. Sie finden die Rangliste zusammen mit weiteren Informationen zur Serie im ersten Beitrag .
Obwohl ich eine Menge Ideen für die Serie habe, sind die zukünftigen Herausforderungen noch nicht in Stein gemeißelt. Wenn Sie Vorschläge haben, teilen Sie mir dies bitte auf dem entsprechenden Sandbox-Post mit .
Loch 2: Zahlen aus einer Normalverteilung
Ich kann nicht glauben, dass dies noch nicht geschehen ist! Sie generieren Zufallszahlen aus einer Normalverteilung . Einige Regeln (die meisten von ihnen werden wahrscheinlich automatisch von den meisten Einreichungen abgedeckt, einige sind jedoch vorhanden, um die Konsistenz der Ergebnisse zwischen sehr unterschiedlichen Sprachen zu gewährleisten):
Sie sollten zwei nicht negative Ganzzahlen als Eingabe verwenden : einen Startwert
S
und die AnzahlN
der zurückzugebenden Zahlen. Die Ausgabe sollte eine Liste vonN
Gleitkommazahlen sein, die aus einer Normalverteilung mit dem Mittelwert 0 und der Varianz 1 erstellt wurden . Immer wenn Ihr Beitrag den gleichen Samen erhältS
, sollte er die gleiche Nummer ergeben. Insbesondere wenn es einmal mit und einmal mit aufgerufen wird , sollten die ersten Einträge der beiden Ausgänge identisch sein. Zusätzlich sollten mindestens 2 16 unterschiedliche Werte unterschiedliche Sequenzen erzeugen.(S, N1)
(S, N2)
min(N1, N2)
S
Sie können jeden eingebauten Zufallszahlengenerator verwenden, der dokumentiert ist, um Zahlen aus einer (ungefähren) gleichmäßigen Verteilung zu ziehen, vorausgesetzt, Sie können
S
sie weitergeben und er unterstützt mindestens 2 16 verschiedene Startwerte. Wenn Sie dies tun, sollte der RNG in der Lage sein, mindestens 2 20 verschiedene Werte für eine bestimmte Nummer zurückzugeben, die Sie von ihm anfordern.- Wenn Ihr verfügbares einheitliches RNG eine geringere Reichweite hat, nicht aussaatfähig ist oder zu wenig Samen enthält, müssen Sie entweder zuerst ein einheitliches RNG mit einer ausreichend großen Reichweite über dem eingebauten RNG aufbauen oder Ihr eigenes geeignetes RNG mit implementieren der Samen. Diese Seite kann hilfreich sein.
- Wenn Sie keinen etablierten Algorithmus zur Erzeugung von Normalverteilungen implementieren, fügen Sie bitte einen Korrektheitsnachweis bei. In beiden Fällen muss der von Ihnen gewählte Algorithmus eine theoretisch genaue Normalverteilung ergeben (mit Ausnahme von Einschränkungen des zugrunde liegenden PRNG- oder Datentyps mit begrenzter Genauigkeit).
- Ihre Implementierung sollte entweder Gleitkommazahlen (mindestens 32 Bit breit) oder Festkommazahlen (mindestens 24 Bit breit) verwenden und zurückgeben, und alle arithmetischen Operationen sollten die volle Breite des ausgewählten Typs verwenden.
- Sie dürfen keine eingebauten Funktionen verwenden, die in direktem Zusammenhang mit der Normalverteilung oder Gaußschen Integralen stehen, wie z. B. die Fehlerfunktion oder deren Inverse.
Sie können ein vollständiges Programm oder eine Funktion schreiben und Eingaben über STDIN, Befehlszeilenargument, Funktionsargument oder Eingabeaufforderung vornehmen und Ausgaben über Rückgabewerte oder durch Drucken an STDOUT (oder die nächstgelegene Alternative) erzeugen.
S
und N
es handelt sich um nicht negative ganze Zahlen mit jeweils weniger als 2 20 . Die Ausgabe kann in einem beliebigen praktischen, eindeutigen Listen- oder Zeichenfolgenformat erfolgen.
Dies ist Codegolf, daher gewinnt die kürzeste Übermittlung (in Byte). Und natürlich wird die kürzeste Einreichung pro Benutzer auch in die Gesamt-Bestenliste der Serie aufgenommen.
Bestenliste
Der erste Beitrag der Serie generiert eine Rangliste.
Um sicherzustellen, dass Ihre Antworten angezeigt werden, beginnen Sie jede Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:
# Language Name, N bytes
Wo N
ist die Größe Ihres Beitrags? Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:
# Ruby, <s>104</s> <s>101</s> 96 bytes
(Die Sprache wird derzeit nicht angezeigt, das Snippet erfordert sie jedoch und analysiert sie. In Zukunft werde ich möglicherweise eine Bestenliste nach Sprachen hinzufügen.)