乱数/単語のシーケンスを生成するための確率的バージョンのseq?


10

しばらく前に、私はseqのようなツールを使用して、一連の疑似ランダム生成数をstdoutに出力しました。範囲、シード、サンプル数などを指定できます。

このツールの名前を忘れてしまいました。誰かが私を助けてくれますか?

たぶん、たとえば、異なる確率分布や、異なるアルファベットと長さ/文字の分布でのランダムな単語のシーケンスの生成をサポートする、より高度なツールを知っているかもしれません。

回答:


11

ジョットのことですか?

$ jot 
jot: jot - print sequential or random data
usage:  jot [ options ] [ reps [ begin [ end [ s ] ] ] ]
Options:
    -r      random data
    -c      character data
    -n      no final newline
    -b word     repeated word
    -w word     context word
    -s string   data separator
    -p precision    number of characters

Ubuntuを使用している場合、パッケージはathena-jotです。簡単な例:

$ jot -r 10 12 27
26
13
22
18
25
12
13
23
15
23

さようなら。


はい、ジョットはそのコマンドでした、ありがとう!繰り返しますが、より高度なシーケンス生成ツールのさらなる提案に感謝します。
maxschlepzig 2010

2

必要なことを行う小さなスクリプトを書くことを気にしないのであれば、オープンソースの統計システムであるRでそれを行うことをお勧めします。

たとえば、次の1行で、ガウス分布された100個の数値のリストを取得するとします。

$ Rscript -e 'write(rnorm(100) * 100 + 100, "", 1)'
234.2903
-25.53289
168.0262
-28.49810
105.0687
85.97355
269.5072
...

これを分解してみましょう。

標準Rコマンドを使用すると、インタラクティブなプログラミング環境になります。これは、手動で何かを行う方法を模索している場合や、何かを段階的に構築している場合には問題ありませんが、質問から、数値のリストが必要なだけのようです別のプログラムに送信します。そのためRscript、代わりにを使用します。これは、従来のUnixスクリプトインタープリターのように動作します。Rスクリプトを含むファイルの名前を渡すか、標準の-eフラグを使用してコマンドライン全体のプログラムテキストを渡すことができます。

rnorm()「正規」またはガウス分布の乱数のリストを取得するR関数です。最大3つのパラメーターが必要ですが、最初のパラメーターのみが必要で、必要な数を指定できます。100を要求しました。他の2つのオプションのパラメーターのデフォルトを取ることにより、平均0と標準偏差1を取得します。

その後の演算は、R言語の優れた機能を示すだけです。データテーブル全体、行列などに対して、より一般的な言語のスカラー値と同じくらい簡単に演算を実行できます。生成できるすべての値に100を掛けて100を加えました。Rは本格的なプログラミング言語であるため、この数値のリストで実行できることには制限がありません。これが、のような固定目的のコマンドの代わりにこのようなシステムを使用する利点ですjot

前の操作の結果をwrite()関数に渡します。関数はデフォルトでデータをファイルに書き込みますが、2番目のパラメーター(ファイル名)に空の文字列を渡すことでオーバーライドしているため、テーブルに代わりに端末。次のパラメータは1、出力が単一列形式であることを伝えています。

Rには、基本システムに組み込まれた他の多くの乱数生成関数があります。たとえばjot、次のスクリプトでlcprianiの回答のコマンドを模倣できます。

$ Rscript -e 'write(round(runif(10, 12, 27)), "", 1)'

ここではrunif()、12から27までの10の一様分布乱数を取得するために使用しています。rnorm()上記で使用したと同様に、この関数は浮動小数点値を返すround()ため、画面に書き込む前にそれらを最も近い整数値に戻す必要があります。

Rはまた、PerlのCPANでモデル化されたパッケージリポジトリであるCRANに豊富なアドオンセットを持っています。興味があるかもしれませんが、単にrandomと呼ばれます。これは、random.orgへのインターフェースとして機能します。これは、大気ノイズから生成された真の乱数を返すサービスです。

Rは完全なプログラミング環境であるため、実際にRからテキスト形式で数値を取り出す必要がない場合もあります。Rで問題を完全に解決できる可能性があります。試してみてください。


与えられた間隔からx個の乱数を取得するRの方法は何ですか?たとえば、10から200の間の100の乱数(たとえば、正規分布から)?
maxschlepzig 2010

jot上記の回答にlcprianiのコマンドの模倣に関する情報を追加しました。の制限値についてrnorm()は、正規分布が機能する方法ではありません。デフォルトの平均値0とSD値1を採用した場合、戻り値として1000が依然として考えられますが、その可能性は非常に低いです。Rを使用すると、値をクランプして特定の範囲外のものを削除する何かを記述できますが、正規分布を誤って使用している可能性があります。
ウォーレンヤング
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.