【发布时间】:2010-10-18 03:02:30
【问题描述】:
我想要一个随机生成的正负序列整数文件。现在,我要求文件包含大致相等数量的负数和正数(无需保证),但以后可以轻松更改比例。 “串行”是指第k个随机负数等于-k,第k个随机正数等于+k。
这个 GNU Bash 脚本单行符可以满足文件格式,但不会是 random。
$ seq -1 -1 -5 && seq 1 5
-1
-2
-3
-4
-5
1
2
3
4
5
这个例子更好地展示了我正在寻找的东西,但仍然不是随机的,因为整数可预测地在负数和正数之间交替。
$ paste <(seq -1 -1 -5) <(seq 1 5) | tr '\t' '\n'
-1
1
-2
2
-3
3
-4
4
-5
5
通过 shuf 命令发送其中一个会使它们随机为负或正,但它们会失去序列性。
$ paste <(seq -1 -1 -5) <(seq 1 5) | tr '\t' '\n' | shuf
-5
4
3
2
-2
1
-1
-4
5
-3
注意:我正在尝试测试排序列表/位数组(零和一)的算法,但如果我使用 0 和 1,我将无法分析排序的行为或判断是否保持稳定性。
【问题讨论】:
-
你想要随机数还是随机排序的集合?
-
我想要一个具有我所描述的品质的文件,我不在乎它是从什么生成的。
-
问题是你的措辞不清楚。如果很清楚“[你]描述的品质”是什么,就没有必要问了。 :-P 问题在于您谈论的是“随机生成的数字”,但随机的只是数字来自哪个序列(正数或负数)。
-
我尽我所能去描述它。这很难做到。我怎么能做得更好?我在哪里说“随机生成的数字”。错误引用我是一种糟糕的形式。
-
好吧,我在第一条评论中为您介绍了两种可能性。你想要哪一款?
标签: language-agnostic bash random awk