Wie kann ich nach einer Reihe zufällig generierter Daten herausfinden, wie zufällig es tatsächlich ist? Ist R-lang ein gutes Werkzeug für dieses Matlab? Welche anderen Fragen können diese Tools zu zufällig generierten Daten beantworten? Gibt es ein anderes Werkzeug dafür?
Die DieHarder-Testbatterie von Robert G. Brown --- die neu implementiert und erweitert wird das alte DIEHARD von Marsaglia et al. wurde in das R-Paket RdieHarder eingepackt, mit dem du anfangen könntest.
Beachten Sie, dass RDieHarder Versionen ihre spezielle Übereinstimmung benötigen DieHarder veröffentlicht - und wir sind noch nicht dort für die neueste Entwicklungsversion der letzteren.
Bearbeiten Auch für die Untergruppe der kryptografischen Tests sollte die NIST-Suite (die in DieHarder enthalten ist) geeignet sein, da sie genau dafür entworfen wurde.
Zuerst müssen Sie entscheiden, welche Art von Zufälligkeit Sie testen. Haben Sie eine gleichmäßige Verteilung innerhalb einiger Bereiche im Sinn? Das ist normalerweise das, was Leute im Sinn haben, obwohl Sie vielleicht eine andere Art von Zufälligkeit haben, wie eine normale Verteilung.
Sobald Sie eine Kandidatenverteilung haben, können Sie die Güte der Anpassung an diese Verteilung testen. Der Kolmogorov-Smirnov-Test ist ein guter Allzwecktest. Ich glaube, es heißt ks.test
in R. Aber ich glaube auch, dass es unterschiedliche Werte annimmt, das könnte ein Problem sein, wenn Sie von einem so kleinen Bereich von Werten abtasten, dass derselbe Wert mehr als einmal auftaucht.
S. Lott erwähnte Knuths seminumerische Algorithmen in den Kommentaren. Dieses Buch hat eine gute Einführung in den Chi-Quadrat-Test und die Kolmogorov-Smirnov-Tests für die gute Passform.
Wenn Sie vermuten, dass Sie einheitliche Zufallswerte haben, ist der von Dirk Eddelbüttel erwähnte DIEHARD-Test ein Standardtest.
Laut Wikipedia ( Randomness ):
Die zentrale Idee ist, dass eine Kette von Bits sind zufällig, wenn und nur wenn es ist kürzer als jedes Computerprogramm, das kann diese Schnur produzieren (Kolmogorov Zufälligkeit) - das bedeutet, dass zufällig Strings sind solche, die nicht sein können komprimiert.
Speichern Sie den Zufallszahlenstrom daher in einer Datei und komprimieren Sie ihn mit Ihrem Lieblingswerkzeug (zip, rar, ...). Das Komprimierungsverhältnis kann als Maß für die Zufälligkeit interpretiert werden ... Noch besser würde ich es als eine relative Punktzahl verwenden, um die Zufälligkeit zweier Datenreihen zu vergleichen.
Ich empfehle das Kapitel 10 von Schöne Tests : Testen eines Zufallszahlengenerators. Es ist ein wenig zugänglicher als die meisten Texte zu diesem Thema. Vielleicht, wenn wir nett sind, könnte der Autor dieses Kapitels, John Cook, vorbeikommen und seine Eingabe geben.
Für die Theorie ist die oben erwähnte Referenz von Knuth nützlich und um Amros Antwort zu verknüpfen, gibt es Arbeiten von Li & amp; Vitanyi, die sich hier bezieht. Link-Text
>Tags und Links r matlab cryptography