Vor einiger Zeit habe ich ein seq-ähnliches Werkzeug verwendet, um eine Folge von pseudozufällig generierten Zahlen auf stdout zu drucken. Sie können einen Bereich, einen Startwert, die Anzahl der Proben und vieles mehr angeben.
Ich habe gerade den Namen dieses Tools vergessen. Kann mir jemand helfen?
Vielleicht kennen Sie sogar ein fortgeschritteneres Tool, das beispielsweise unterschiedliche Wahrscheinlichkeitsverteilungen oder sogar die Erzeugung einer Folge zufälliger Wörter unter verschiedenen Alphabeten und Längen- / Zeichenverteilungen unterstützt.
shell
command-line
maxschlepzig
quelle
quelle
Wenn es Ihnen nichts ausmacht, ein kleines Skript zu schreiben, um das zu tun, was Sie brauchen, würde ich empfehlen, es in R , dem Open-Source-Statistiksystem, zu tun .
Betrachten Sie beispielsweise diesen Einzeiler, um eine Liste von 100 Gauß-verteilten Zahlen zu erhalten:
Lassen Sie uns das zusammenfassen.
Der Standardbefehl
R
bringt Sie in eine interaktive Programmierumgebung. Dies ist in Ordnung, wenn Sie versuchen, etwas von Hand zu tun oder schrittweise aufzubauen. Aus Ihrer Frage geht jedoch hervor, dass Sie nur eine Liste von Zahlen benötigen an ein anderes Programm senden. Stattdessen verwenden wirRscript
, das sich eher wie ein herkömmlicher Unix-Skriptinterpreter verhält: Sie können ihm den Namen einer Datei übergeben, die ein R-Skript enthält, oder das Standardflag-e
verwenden, um den gesamten Programmtext in der Befehlszeile zu übergeben.rnorm()
ist die R-Funktion, um eine Liste von Zufallszahlen mit der "normalen" oder Gaußschen Verteilung zu erhalten. Es werden bis zu drei Parameter benötigt, von denen nur der erste erforderlich ist, wie viele Zahlen Sie möchten. Wir haben nach 100 gefragt. Wenn wir die Standardeinstellungen für die beiden anderen optionalen Parameter übernehmen, erhalten wir einen Mittelwert von 0 und eine Standardabweichung von 1.Die Arithmetik danach zeigt nur eine coole Funktion der R-Sprache: Sie können Arithmetik für ganze Datentabellen, Matrizen usw. genauso einfach ausführen wie einen Skalarwert in einer typischeren Sprache. Ich habe alle generierten Werte mit 100 multipliziert und 100 hinzugefügt, nur weil ich kann. Da R eine vollwertige Programmiersprache ist, gibt es keine Begrenzung für die Dinge, die Sie mit dieser Liste von Zahlen tun können. Das ist der Vorteil der Verwendung eines solchen Systems anstelle eines Befehls mit festem Zweck wie
jot
.Wir übergeben das Ergebnis dieser vorherigen Operation an die
write()
Funktion, die die Daten standardmäßig in eine Datei schreibt. Wir haben dies jedoch überschrieben, indem wir eine leere Zeichenfolge für den zweiten Parameter, den Dateinamen, übergeben, sodass die Tabelle in geschrieben wird das Terminal stattdessen. Der nächste Parameter1
sagt nur, dass wir unsere Ausgabe im einspaltigen Format wünschen.R verfügt über viele andere Funktionen zur Erzeugung von Zufallszahlen, die in das Basissystem integriert sind. Zum Beispiel können wir den
jot
Befehl in lcprianis Antwort mit diesem Skript nachahmen :Hier verwenden wir
runif()
, um 10 gleichmäßig verteilte Zufallszahlen von 12 bis 27 zu erhalten. Wiernorm()
oben verwendet, gibt diese Funktion Gleitkommawerte zurück, sodass wirround()
sie auf ihre nächsten ganzzahligen Werte setzen müssen, bevor wir sie auf den Bildschirm schreiben.R verfügt außerdem über eine Reihe von Add-Ons in CRAN , einem Paket-Repository, das dem CPAN von Perl nachempfunden ist. Eine, die Sie interessieren könnte, heißt einfach random und fungiert als Schnittstelle zu random.org , einem Dienst, der echte Zufallszahlen zurückgibt, die aus atmosphärischem Rauschen generiert werden.
R ist eine vollständige Programmierumgebung, daher müssen Sie Ihre Zahlen möglicherweise nicht im Textformat aus R herausholen. Möglicherweise können Sie Ihr Problem vollständig in R lösen. Probieren Sie es aus.
quelle
jot
der obigen Antwort Informationen zur Nachahmung des Befehls von lcpriani hinzugefügt . Bei den Grenzwerten fürrnorm()
funktioniert die Normalverteilung nicht so. Wenn Sie den Standardmittelwert von 0 und die SD von 1 verwenden, ist 1000 immer noch ein möglicher Rückgabewert. Dies ist nur äußerst unwahrscheinlich. Mit R können Sie etwas schreiben, das die Werte festklemmt, um Dinge außerhalb eines bestimmten Bereichs zu entfernen, aber dann würden Sie wahrscheinlich die Normalverteilung missbrauchen.