不久前,我使用类似 seq 的工具将伪随机生成的数字序列打印到标准输出。您可以指定范围、种子和样本数量等等。
我刚刚忘记了这个工具的名字。谁能帮我吗?
也许您甚至知道更高级的工具,例如,它支持不同的概率分布,甚至支持在不同字母和长度/字符分布下生成随机单词序列。
答案1
你是说乔特吗?
$ 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
再见。
答案2
如果您不介意编写一个小脚本来完成您需要的操作,我建议您这样做右,开源统计系统。
例如,考虑这个单行代码来获取 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 函数,用于获取具有“正态”或高斯分布的随机数列表。它最多需要三个参数,只需要第一个,你想要多少个数字。我们要求为 100。通过采用其他两个可选参数的默认值,我们得到平均值 0 和标准差 1。
之后的算术只是展示了 R 语言的一个很酷的功能:您可以对整个数据表、矩阵等进行算术,就像在更典型的语言中计算标量值一样容易。我将所有生成的值乘以 100,然后再加 100,因为我可以。由于 R 是一种成熟的编程语言,因此您可以使用此数字列表执行无限的操作。这就是使用这样的系统而不是像jot
.
我们将先前操作的结果传递给该write()
函数,该函数默认将数据写入文件,但我们通过为第二个参数(文件名)传递一个空白字符串来覆盖它,因此它将表写入到而是使用终端。下一个参数 ,1
只是告诉它我们希望以单列格式输出。
R 有许多基本系统中内置的其他随机数生成函数。例如,我们可以jot
使用以下脚本模仿 lcpriani 的答案中的命令:
$ Rscript -e 'write(round(runif(10, 12, 27)), "", 1)'
在这里,我们用来runif()
获取 12 到 27 之间的 10 个均匀分布的随机数。与rnorm()
我们上面使用的 一样,该函数返回浮点值,因此round()
在将它们写入屏幕之前,我们必须将它们转换为最接近的整数值。
R 还有一组丰富的附加组件克兰,一个以 Perl 的 CPAN 为模型的包存储库。您可能感兴趣的一个简单地称为随机的,它充当接口随机组织,一项返回由大气噪声生成的真实随机数的服务。
R 是一个完整的编程环境,因此您可能实际上不需要以文本格式从 R 中获取数字。您也许能够在 R 中完全解决您的问题。尝试一下。