用于生成随机数/单词序列的 seq 随机版本?

用于生成随机数/单词序列的 seq 随机版本?

不久前,我使用类似 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 中完全解决您的问题。尝试一下。

相关内容